在 Python 2.7 中。如何从文件中读取特定文本并分配给变量

卡尔文

如何将文本读取为字符串而不是整数?

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()ValueErrortry/catchfind()

更新

鉴于您使用的是 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

(Python中,MySQL的)我如何分配给MySQL查询一个变量?

在Python 3中打开2个文件并将它们分配给2个Set

如何在Windows 7中运行python 2和3?

如何在Windows 7中运行python 2和3?

将运算符分配给python中的变量?

如何从(.db)文件读取值并将值分配给python变量

如何将从函数调用返回的值分配给Angular 2中html内的变量

动态将获得的结果分配给Python中的变量

如何将2d libreoffice calc命名范围分配给python变量。可以在Libreoffice Basic中做到

当内存分配给python中的变量时?

如何将动态创建的输入字段中的值分配给Python中的各个变量

是否可以将for语句分配给python中的变量?

检查在Python 2中分配给变量的文件大小

将字符串分配给python中的变量

如何将变量分配给python中的特定函数输出?

Python:如何将 2D 列表中项目的索引分配给两个整数变量?

如何将对象属性分配给 Angular 2 中的文本框?

如何将值分配给角度 2 中的参考变量?

如何使用exec根据Python3中的字典将列表分配给变量?

如何将值分配给 angular 7 中的变量

将列表中的值分配给 Python 中的变量

如何使用python读取文本文件中的不同数据类型并使用python将它们分配给变量

将语句块的结果分配给python中的变量

你如何在 python 中读取文本的输入行并从这些元素中创建一个数组并将最后一位数字分配给一个变量?

如何从excel文件中读取包含符号的值(例如:[1,2,3]作为列表或一维/二维数组)并分配给python中的变量?

Python - 如何将变量分配给 api 响应中的特定数据点

在python中读取文件后如何将文件中的数字分配给变量?

将函数分配给python中的变量

将循环结果分配给python中的变量