Python读取txt排序后输出到控制台,如何将结果写入CSV指定列?
Python代码问题排查与修复
是否可以直接将打印的内容输出到CSV?
可以,但需要先把排序后的姓名暂存到变量中,不能直接复用print输出的内容写入CSV。
原代码存在的问题
- 读取txt的代码块中,你将迭代变量命名为和文件对象相同的
file,不仅覆盖了原文件对象,也没有存储排序后的姓名结果,出了第一个with块后就无法拿到排序后的数据 csv.writer()的第一个入参要求是可写的文件对象,你错误传入了列表names,不符合方法调用要求- 写入块中的
print(file)调用的是第一个代码块中已经被关闭且被覆盖的变量,无法输出你需要的姓名数据
修正后可运行的完整代码
import csv # 读取txt文件并排序,结果存储到列表 sorted_names = [] with open('/users/h/documents/pyprojects/boy-names.txt','r', encoding='utf-8') as f: # 逐行读取,去掉首尾空白字符后排序,过滤空行 sorted_names = sorted(line.strip() for line in f if line.strip()) # 控制台输出排序结果 for name in sorted_names: print(name) # 写入CSV文件,每个姓名占第一列的单独一行 with open('/users/h/documents/pyprojects/boy-names.csv', 'w', newline='', encoding='utf-8') as csv_file: writer = csv.writer(csv_file) # 写入表头 writer.writerow(['Column1']) # 循环写入每个姓名 for name in sorted_names: writer.writerow([name])
内容的提问来源于stack exchange,提问作者the hank
相关产品推荐
相关产品推荐

