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

Python读取CSV带引号内容写入TXT时引号丢失的解决求助

解决CSV写入时保留指定字段引号的问题

问题原因

csv.reader在解析带引号的字段时,会自动去除外层引号,所以你读取到的row_old[1]值是123456789abc而非带引号的原内容。默认情况下,csv.writer仅在字段包含分隔符、换行符等特殊字符时才会添加引号,因此写入时不会为这个字段自动补全引号,导致输出不符合预期。

另外你原写入代码存在参数错误:writer.writerow(new_file['first'], new_file['second'])会触发报错,因为writerow仅接受一个可迭代对象作为行数据,需要改为列表或元组形式。

解决方案

方案一:利用csv模块的引号策略自动添加

通过设置csv.writer的quoting=csv.QUOTE_NONNUMERIC参数,让非数字类型的字段自动被加上引号,正好匹配你的需求(第一个数字字段不加引号,第二个字符串字段加引号):

import csv

line_to_write = []

# 读取CSV文件
with open('test.csv', 'r', encoding='UTF-8') as f:
    data_old = csv.reader(f, delimiter=",", lineterminator="\n")
    for row_old in data_old:
        old_file = {}
        old_file['first'] = row_old[0]
        old_file['second'] = row_old[1]
        line_to_write.append(old_file)

# 写入TXT文件(按CSV格式输出)
with open('test.txt', 'w', encoding='UTF-8') as g:
    writer = csv.writer(g, lineterminator="\n", quoting=csv.QUOTE_NONNUMERIC)
    for new_file in line_to_write:
        writer.writerow([new_file['first'], new_file['second']])

方案二:手动为指定字段添加引号

如果只需要给特定字段加引号,可以直接拼接带引号的字符串:

import csv

line_to_write = []

# 读取CSV文件
with open('test.csv', 'r', encoding='UTF-8') as f:
    data_old = csv.reader(f, delimiter=",", lineterminator="\n")
    for row_old in data_old:
        old_file = {}
        old_file['first'] = row_old[0]
        old_file['second'] = row_old[1]
        line_to_write.append(old_file)

# 写入TXT文件(按CSV格式输出)
with open('test.txt', 'w', encoding='UTF-8') as g:
    writer = csv.writer(g, lineterminator="\n")
    for new_file in line_to_write:
        quoted_second = f'"{new_file["second"]}"'
        writer.writerow([new_file['first'], quoted_second])

两种方案都能输出你预期的结果:123,"123456789abc"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:32:06