如何用Python3给文件每行的开头、中间和末尾追加文本并格式化?
我来帮你搞定这个文本格式转换的问题!既然已经清理掉无用字符了,接下来的每行文本格式调整其实用两种常用工具就能轻松搞定,针对你的需求,我给你准备了两种方案:
方案1:用sed命令行快速处理(适合Linux/macOS/WSL环境)
sed是处理单行文本的利器,一行命令就能完成转换。假设你的源文件叫input.txt,想要输出到output.txt,直接执行下面的命令:
sed -E 's/^(\S+) (\S+) (\S+) \S+$/<option label="\1 \2 \3" value="\2"><\/option>/' input.txt > output.txt
命令解释:
-E:启用扩展正则表达式,让括号不用额外转义,写起来更直观^(\S+) (\S+) (\S+) \S+$:匹配每行的结构,把行拆成4个部分:\1对应第一个字段(比如示例里的DMA)\2对应第二个字段(示例里的123,也就是我们需要的value值)\3对应第三个字段(示例里的USA)- 最后一个
\S+是没用的第四个字段,直接忽略
- 替换部分把这三个字段组合成
label的内容,用\2作为value,再包裹上你需要的<option>标签
方案2:用Python脚本处理(更灵活,适合后续调整)
如果你需要更灵活的逻辑(比如后续可能调整字段位置、处理空行等),Python脚本会更合适。下面是一个完整的脚本:
# 读取源文件内容 with open('input.txt', 'r', encoding='utf-8') as infile: lines = infile.readlines() # 生成转换后的内容并写入新文件 with open('output.txt', 'w', encoding='utf-8') as outfile: for line in lines: # 去掉每行首尾的空白字符(包括换行符) cleaned_line = line.strip() # 跳过空行 if not cleaned_line: continue # 按空格拆分每行成字段列表 parts = cleaned_line.split() # 确保字段数量足够(避免报错) if len(parts) >= 3: # 提取需要的内容:value是第二个字段,label是前三个字段的组合 value = parts[1] label = ' '.join(parts[:3]) # 拼接成目标格式的行 formatted_line = f'<option label="{label}" value="{value}"></option>\n' outfile.write(formatted_line)
脚本优势:
- 自动跳过空行,避免生成无效的
<option>标签 - 用
split()拆分字段,不管字段之间有多少个空格都能正确处理 - 如果后续需求变化(比如label需要包含更多字段),只需要修改
parts[:3]为parts[:4]这类简单调整就行 - 代码可读性高,后续维护起来更方便
两种方案都能处理你那近100行的内容,选你顺手的工具就行!
内容的提问来源于stack exchange,提问作者user3732479
相关产品推荐
相关产品推荐

