Python如何从非标准API返回文本文件中提取id字段值
问题原因
- 核心错误:
re.findall()的第二个参数错误传入了lines(所有行组成的列表),而该函数要求传入字符串类型的待匹配内容,因此永远匹配不到结果 - 正则规则没有设置捕获组,无法直接提取id值,还需要额外做字符串处理
with open上下文会自动管理文件句柄,无需手动调用f.close(),重复关闭属于冗余操作- 文件后缀改为txt不会对内容解析产生任何影响,不需要担心这个问题
修复后代码
import re # 只读模式打开原文件即可,不需要读写模式r+ with open('slo_id.txt', 'r', encoding='utf-8') as f: content = f.read() # 正则直接捕获id值:匹配'id': ' 后到下一个单引号前的所有内容 ids = re.findall(r"'id'\s*:\s*'([^']+)'", content) # 打印所有匹配到的id for id_val in ids: print(id_val) # 如需写入新文件,添加以下代码即可 with open('output_ids.txt', 'w', encoding='utf-8') as f: f.write('\n'.join(ids))
内容的提问来源于stack exchange,提问作者InvadGir
相关产品推荐
相关产品推荐

