Python如何从文本文件中提取数值随机变化的itag字段值
原代码问题排查
- 循环内重复执行
open(report_file).readline(),每次操作都会重新打开文件只读第一行,永远无法读取后续行内容 - 代码中直接使用
return语句,第一次循环运行到此处就会直接终止逻辑,不会处理剩余行 - 提取逻辑未过滤
<Stream:前缀,输出结果不符合预期格式
可用解决方案
方案1:纯字符串处理实现
无需引入额外依赖,逻辑简单直观:
with open(report_file, 'r', encoding='utf-8') as file_obj: for line in file_obj: itag_start = line.find('itag="') if itag_start < 0: # 当前行没有itag字段,跳过 continue # 查找itag值的结束引号位置 itag_end = line.find('"', itag_start + 6) # 拼接输出格式并打印 print(f'itag="{line[itag_start+6:itag_end]}"')
方案2:正则匹配实现
适配性更强,哪怕字段位置变动也能正确提取:
import re with open(report_file, 'r', encoding='utf-8') as file_obj: content = file_obj.read() # 匹配所有符合itag="数字"格式的内容 itag_list = re.findall(r'itag="\d+"', content) for item in itag_list: print(item)
以上两种方案都支持提取任意数量、任意数值的itag内容,满足不同音频文件的解析需求。
内容的提问来源于stack exchange,提问作者Dương Duy Nhật Minh
相关产品推荐
相关产品推荐

