使用Python从TXT文件中搜索并提取指定格式字符串
Python提取TXT中特定格式字符串的解决方案
没问题!我来帮你搞定这个需求——用Python从TXT文件里提取像, 12345-008-、, 15432-002-这类格式一致、仅数字有差异的字符串,然后输出到新文件中。
核心思路
这类格式固定的字符串最适合用正则表达式来匹配,我们先定义精准的匹配规则,再批量提取所有符合规则的内容,最后写入目标文件。
完整代码示例
import re # 替换成你实际的文件路径 input_txt = "your_input_file.txt" output_txt = "extracted_results.txt" # 完全匹配你给出的示例格式:逗号+空格+5位数字+连字符+3位数字+连字符+空格 match_pattern = r' , \d{5}-\d{3}- ' # 如果你的文本里空格数量不固定(比如有时候多一个空格或者少一个),用这个灵活版正则: # match_pattern = r'\s*,\s*\d{5}-\d{3}-\s*' try: # 读取原文件内容 with open(input_txt, 'r', encoding='utf-8') as infile: full_content = infile.read() # 找出所有符合格式的字符串 all_matches = re.findall(match_pattern, full_content) # 可选:去重(如果有重复的匹配项,想保留唯一结果的话) # 要是需要保留原文本中的出现顺序,就用下面的顺序保留版,否则用set去重更简单 unique_matches = [] seen = set() for item in all_matches: if item not in seen: seen.add(item) unique_matches.append(item) # 写入结果到新文件 with open(output_txt, 'w', encoding='utf-8') as outfile: # 这里用strip()可以去掉前后多余空格,要是想保留原格式就直接写item+'\n' for match in unique_matches: outfile.write(match.strip() + '\n') print(f"搞定!一共提取到 {len(unique_matches)} 条符合要求的字符串,已经存到 {output_txt} 里啦") except FileNotFoundError: print(f"哎呀,找不到输入文件:{input_txt},检查下路径对不对~") except Exception as e: print(f"出了点小问题:{str(e)}")
关键细节说明
- 正则表达式调整:
- 如果你要匹配的核心是
XXXXX-XXX(不管前后的逗号空格),可以把正则改成r'\d{5}-\d{3}' - 要是数字位数有变化(比如4位数字+2位),直接修改
\d{5}里的数字就行,比如\d{4}-\d{2}
- 如果你要匹配的核心是
- 编码问题:加上
encoding='utf-8'可以避免中文或特殊字符乱码 - 去重选项:如果不需要去重,直接把
unique_matches换成all_matches就行 - 异常处理:代码里加了文件找不到和通用异常的处理,方便排查问题
内容的提问来源于stack exchange,提问作者KEVIN MCPARTLIN
相关产品推荐
相关产品推荐

