Python 3如何批量提取.ls文档指定数据并导出至Excel
.ls文件批量提取数据实操方案
readlines() 本身不支持传入过滤规则直接筛选特定行,没必要先把所有行全读入内存再筛选,逐行遍历判断的方式效率更高,100个文件的处理量跑起来几乎没有延迟。
- 核心逻辑不要用
readlines()全量读,直接迭代文件对象逐行校验,符合规则的内容直接存入结果列表即可,基础代码框架如下:
import os # 替换成你自己的文件路径 ls_file_dir = "./ls_files" output_path = "./提取结果.txt" res_list = [] for filename in os.listdir(ls_file_dir): if not filename.endswith(".ls"): continue file_full_path = os.path.join(ls_file_dir, filename) # 注意encoding参数匹配你文件的实际编码,工业软件导出的.ls很多是gbk编码,报解码错就换gbk试 with open(file_full_path, "r", encoding="utf-8") as f: for line in f: # 先去掉行首尾的换行、空格 clean_line = line.strip() # 下面替换成你自己的匹配规则,几个常用规则示例: # 1. 行内包含指定关键词就保留 if "目标关键词" in clean_line: # 建议带上来源文件名,后续导Excel好溯源 res_list.append(f"{filename},{clean_line}") # 2. 匹配固定开头/结尾的行 # if clean_line.startswith("固定开头字符"): # if clean_line.endswith("固定结尾字符"): # 3. 要提取行内片段的话,用split拆分或者正则匹配即可 # 比如行格式为"测试结果: 98.5 单位:%",要提取数值的话: # if "测试结果:" in clean_line: # value = clean_line.split("测试结果:")[1].split()[0] # res_list.append(f"{filename},{value}")
- 写txt文件的时候统一用逗号或者制表符
\t做字段分隔,Excel可以直接识别分列,不用额外做导入处理。如果用逗号分隔,直接把后缀改成.csv,双击就能用Excel打开,比txt更方便。写文件参考代码:
# 用utf-8-sig编码避免Excel打开乱码 with open(output_path, "w", encoding="utf-8-sig") as f: # 先写表头,对应你提取的字段 f.write("来源文件,提取内容\n") for item in res_list: f.write(f"{item}\n")
小提示:如果你的匹配规则比较复杂,比如要提取特定格式的编号、数值,直接用Python内置的
re正则模块做匹配即可,灵活度比纯字符串判断高很多。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

