You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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)}")

关键细节说明

  1. 正则表达式调整:
    • 如果你要匹配的核心是XXXXX-XXX(不管前后的逗号空格),可以把正则改成r'\d{5}-\d{3}'
    • 要是数字位数有变化(比如4位数字+2位),直接修改\d{5}里的数字就行,比如\d{4}-\d{2}
  2. 编码问题:加上encoding='utf-8'可以避免中文或特殊字符乱码
  3. 去重选项:如果不需要去重,直接把unique_matches换成all_matches就行
  4. 异常处理:代码里加了文件找不到和通用异常的处理,方便排查问题

内容的提问来源于stack exchange,提问作者KEVIN MCPARTLIN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:39:37