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

如何用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操作步骤:

  1. 打开Excel,点击「数据」选项卡 → 「自文本/CSV」
  2. 选择你的~分隔文件,在导入向导里:
    • 分隔符选择「其他」,输入~
    • 找到「文本限定符」,设置为"(双引号)
    • 把列的数据格式设置为「文本」(避免数字被自动格式化)
  3. 点击「加载」,导入后每个~分隔的值会进入单独单元格,单元格内的换行会自动保留(双击单元格就能看到)

LibreOffice Calc操作步骤:

  1. 打开Calc,点击「数据」→ 「自文本」
  2. 选择文件后,在导入对话框:
    • 字符集选UTF-8(避免乱码)
    • 分隔符选项勾选「其他」,输入~
    • 勾选「合并分隔符」(如果有连续~的情况)
    • 在「字段选项」里,把所有列设置为「文本」格式
    • 勾选「保留换行符」
  3. 点击「确定」完成导入

方案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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:37:57