You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.7如何读取文件指定文本赋值变量(获取字符串而非索引)

问题根因

str.find() 方法的返回值本身就是匹配子串所在位置的整数索引,未找到匹配时返回-1,你当前的代码仅调用了find()获取位置索引,完全没有执行字符串切片截取操作,自然拿不到目标文本内容。除此之外代码本身还有3处逻辑错误:

  • 纬度结束位置latend的查找逻辑错误:你尝试查找第二个Latitude=子串作为结束标记,但示例文件中Latitude=仅出现1次,因此返回-1,正确的结束标记应该是纬度所在行的换行符。
  • 经度起始位置查找时使用了未定义的变量start,逻辑不成立,运行时本应抛出NameError,若实际运行未报错说明上下文中存在误定义的同名变量,取值完全不符合预期。
  • 经度结束位置longend错误查找逗号位置,但示例文件的经纬度行不存在逗号,返回的8795是文件其他位置的逗号索引,和目标经度内容无关。
修正代码

核心逻辑:先定位目标键(如Latitude=)的起始索引,加上键本身的长度得到值的起始位置,再查找值之后第一个换行符作为结束位置,最后通过字符串切片拿到目标值。Python 2.7环境可直接运行的代码如下:

# 前置条件:已将文件全部内容读取为字符串存入content变量
# 读取纬度
lat_key = "Latitude="
lat_key_start = content.find(lat_key)
lat_val_start = lat_key_start + len(lat_key)
lat_val_end = content.find("\n", lat_val_start)
# 兼容最后一行无换行符的情况
lat_val_end = lat_val_end if lat_val_end != -1 else len(content)
latitude = content[lat_val_start:lat_val_end].strip()

# 读取经度
long_key = "Longitude="
long_key_start = content.find(long_key)
long_val_start = long_key_start + len(long_key)
long_val_end = content.find("\n", long_val_start)
long_val_end = long_val_end if long_val_end != -1 else len(content)
longitude = content[long_val_start:long_val_end].strip()

运行后latitude变量值为N21° 20' 47.36",longitude变量值为W157° 27' 23.20",均为预期的字符串类型。

内容的提问来源于stack exchange,提问作者Calvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 07:12:34