如何用Python处理含换行符的~分隔TXT/CSV文件?
解决带换行符的~分隔文件转CSV/保留换行单元格问题
这问题我日常处理数据时经常碰到,给你几个实用的方案,按需选择就行:
方案1:用Python脚本(最灵活,跨平台)
如果你会点Python,这个方法最可控,能处理各种边缘情况(比如值里有双引号的场景)。核心思路是读取文件后按~分割,再用标准CSV库写入——CSV规范本身就支持单元格内换行,只要把带换行的单元格用双引号包裹,Python的csv模块会自动帮你处理转义。
代码示例:
import csv # 替换成你的输入输出文件路径 input_path = "your_input_file.txt" output_path = "formatted_output.csv" # 读取整个文件内容 with open(input_path, 'r', encoding='utf-8') as infile: raw_content = infile.read() # 按~分割,过滤掉空值(比如末尾可能的空串) values = [val for val in raw_content.split('~') if val.strip() != ''] # 写入CSV,自动处理换行和特殊字符 with open(output_path, 'w', newline='', encoding='utf-8') as outfile: writer = csv.writer(outfile) # 把所有值作为一行的单元格(如果要每个值单独占一行,改成下面的循环) writer.writerow(values)
补充:如果你的需求是每个值单独占一行(每行一个单元格),把最后一行的
writer.writerow(values)替换成:for val in values: writer.writerow([val])
方案2:用Excel/LibreOffice Calc可视化导入(适合非代码用户)
如果你不想写代码,直接用办公软件的导入功能就能搞定,关键是要正确设置分隔符和文本限定符:
Excel操作步骤:
- 打开Excel,点击「数据」选项卡 → 「自文本/CSV」
- 选择你的~分隔文件,在导入向导里:
- 分隔符选择「其他」,输入
~ - 找到「文本限定符」,设置为
"(双引号) - 把列的数据格式设置为「文本」(避免数字被自动格式化)
- 分隔符选择「其他」,输入
- 点击「加载」,导入后每个~分隔的值会进入单独单元格,单元格内的换行会自动保留(双击单元格就能看到)
LibreOffice Calc操作步骤:
- 打开Calc,点击「数据」→ 「自文本」
- 选择文件后,在导入对话框:
- 字符集选
UTF-8(避免乱码) - 分隔符选项勾选「其他」,输入
~ - 勾选「合并分隔符」(如果有连续~的情况)
- 在「字段选项」里,把所有列设置为「文本」格式
- 勾选「保留换行符」
- 字符集选
- 点击「确定」完成导入
方案3:用命令行工具awk(适合Linux/macOS用户)
如果你熟悉命令行,用awk一行命令就能搞定,核心是把~替换成逗号,同时给每个值套上双引号(让CSV识别单元格内的换行):
# 基础版(如果值里没有双引号) awk -F'~' '{for(i=1;i<=NF;i++){if($i!="") printf "\"%s\"", $i; if(i<NF) printf ","} print ""}' input.txt > output.csv # 进阶版(处理值里的双引号,转义成""符合CSV规范) awk -F'~' '{for(i=1;i<=NF;i++){if($i!=""){gsub(/"/,"\"\"",$i); printf "\"%s\"", $i}; if(i<NF) printf ","} print ""}' input.txt > output.csv
内容的提问来源于stack exchange,提问作者Arvind selvam
相关产品推荐
相关产品推荐

