如何将文本读取为字符串而不是整数?
latstart = content.find("Latitude=")
latend = content.find("Latitude=",latstart+1)
longstart = content.find("Longitude=",start)
longend = content.find(",",longstart)
这些行应该以文本形式读取数据,但我得到的只是这些数字(分别)......
5639
-1
5664
8795
文件中的原始数据...
[SimVars.0]
Latitude=N21° 20' 47.36"
Longitude=W157° 27' 23.20"
怎么了?谢谢。
这是一种方法来做我相信你在你的问题中尝试的方法:
content='''
[SimVars.0]
Latitude=N21° 20' 47.36"
Longitude=W157° 27' 23.20"
'''
latKey = "Latitude="
longKey = "Longitude="
try:
latstart = content.index(latKey) + len(latKey)
latend = content.find('"', latstart) + 1
longstart = content.find(longKey, latend) + len(longKey)
longend = content.find('"', longstart) + 1
except (ValueError):
print("couldn't find latitude and longitude")
print(f'latstart {latstart}')
print(f'latend {latend}')
print(f'longstart {longstart}')
print(f'longend {longend}')
lat = content[latstart:latend]
long = content[longstart:longend]
print()
print(f'lat {lat}')
print(f'long {long}')
输出:
latstart 22
latend 37
longstart 48
longend 64
lat N21° 20' 47.36"
long W157° 27' 23.20"
评论你的问题:
find()
python内置数据类型的方法str
如果找到则返回第一个参数的位置,如果没有找到则返回-1。要获取文本,您需要lat = content[latstart:latend]
在使用find()
setlatstart
和之后执行类似操作latend
。
的index()
方法是在成功场景中执行相同str
操作的替代方法,但在失败场景中将引发异常(而不是返回 -1)。如果您使用上面代码中的块捕获此异常,则可以省去检查对 for -1 的各个调用的返回值的麻烦,并消除调试代码时的一些猜测。find()
ValueError
try/catch
find()
更新:
鉴于您使用的是 python 2.7 版,为了响应 OP 的print()
引发异常的评论,让我简化代码,看看我们是否可以为您提供在您的环境中工作的东西:
from __future__ import print_function
content='''
[SimVars.0]
Latitude=N21° 20' 47.36"
Longitude=W157° 27' 23.20"
'''
latKey = "Latitude="
longKey = "Longitude="
latstart = content.index(latKey) + len(latKey)
latend = content.find('"', latstart) + 1
longstart = content.find(longKey, latend) + len(longKey)
longend = content.find('"', longstart) + 1
print('latstart ', latstart)
print('latend ', latend)
print('longstart ', longstart)
print('longend ', longend)
lat = content[latstart:latend]
long = content[longstart:longend]
print()
print('lat ', lat)
print('long ', long)
输出:
latstart 22
latend 37
longstart 48
longend 64
lat N21° 20' 47.36"
long W157° 27' 23.20"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句