如何用Python读取文本文件并提取gps_alt、lat、lon值?
提取文本文件指定字段的Python实现
假设你的文本文件中每行是类似 key: value 或 key=value 的键值对格式,以下两种方法可提取gps_alt、lat和lon对应的值:
方法一:逐行读取匹配
适用于格式规整的文本,逻辑简单直接:
# 指定要提取的目标字段 target_fields = {'gps_alt', 'lat', 'lon'} extracted_data = {} # 打开文件(替换为你的实际文件路径) with open('your_file.txt', 'r', encoding='utf-8') as file: for line in file: line = line.strip() if not line: continue # 按分隔符拆分键值,这里假设是冒号,可根据实际调整为等号 if ':' in line: key, val = line.split(':', 1) key = key.strip() val = val.strip() if key in target_fields: # 尝试转为数值类型,保留原始字符串如果转换失败 try: extracted_data[key] = float(val) except ValueError: extracted_data[key] = val print(extracted_data)
方法二:正则表达式匹配
如果文件格式复杂(比如关键字和值的位置不固定),正则表达式更灵活:
import re target_fields = ['gps_alt', 'lat', 'lon'] # 构建匹配模式,支持冒号或等号作为分隔符 regex_pattern = re.compile(r'(?P<key>' + '|'.join(target_fields) + r')\s*[:=]\s*(?P<value>.+?)\s*(?:$|,)') extracted_data = {} with open('your_file.txt', 'r', encoding='utf-8') as file: content = file.read() # 查找所有匹配项 for match in regex_pattern.finditer(content): key = match.group('key') val = match.group('value').strip() try: extracted_data[key] = float(val) except ValueError: extracted_data[key] = val print(extracted_data)
关键提示
- 把代码中的
your_file.txt替换成你实际的文件路径 - 根据文件实际的键值分隔符(冒号/等号)调整代码中的分隔符或正则模式
- 如果值包含空格,需要修改正则表达式的
value匹配逻辑(比如把\S+换成.+?并指定终止符)
内容的提问来源于stack exchange,提问作者JaredCusick
相关产品推荐
相关产品推荐

