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

Python解析CSV文件导出指定列至文本文件时输出格式异常问题求助

问题分析与解决方案

你遇到的问题根源在于对csv.writer.writerow()方法的使用误解:这个方法要求传入一个可迭代的序列(比如列表、元组),当你直接传入字符串row[2]时,Python会把字符串当成字符的迭代器——每个字符都会被当作一个独立的CSV字段,所以输出才会变成t,h,r,e,e这种逗号分隔的字符形式。

下面给你两种可行的修改方案,按需选择:

方案一:直接用普通文件写入(推荐,因为目标是纯文本)

既然你要输出的是纯文本文件而非CSV格式,完全可以跳过csv.writer,直接用文件对象的write()方法,记得手动添加换行符来保证每行一个内容:

#!/usr/bin/env python
import csv

inputFile = open('in.csv', 'r')
inputReader = csv.reader(inputFile)
outputFile = open('out.txt', 'w')

for row in inputReader:
    text = row[2]  # 获取第3列内容
    outputFile.write(text + '\n')  # 写入文本并换行

outputFile.close()
inputFile.close()

进阶优化:用with语句自动管理文件

更推荐用with上下文管理器,它会在代码块结束后自动关闭文件,避免忘记close()导致的资源泄漏:

#!/usr/bin/env python
import csv

with open('in.csv', 'r') as inputFile, open('out.txt', 'w') as outputFile:
    inputReader = csv.reader(inputFile)
    for row in inputReader:
        text = row[2]
        outputFile.write(f"{text}\n")

方案二:保留csv.writer的写法

如果后续你可能需要输出CSV格式内容,只是现在要单个字段,只需要把字符串包装成一个列表(让writerow()识别这是单个字段):

#!/usr/bin/env python
import csv
inputFile = open('in.csv', 'r')
inputReader = csv.reader(inputFile)
outputFile = open('out.txt', 'w')
outputWriter = csv.writer(outputFile)

for row in inputReader:
    text = row[2]  # 将第3列写入文件
    outputWriter.writerow([text])  # 把字符串放进列表里

outputFile.close()
inputFile.close()

这样修改后,输出就会和你的预期一致:

three
six

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 07:52:28