我有一个包含许多列的文件“TAB.csv”。我想从CSV文件中选择一个没有标题的列(该列的索引是3)。然后创建一个新的文本文件“NEW.txt”并在那里写入该列(没有标题)。
下面的代码读取该列,但带有标题。如何省略标题并将该列保存在新的文本文件中?
import csv
with open('TAB.csv','rb') as f:
reader = csv.reader(f)
for row in reader:
print row[3]
答案 0 :(得分:12)
这是@tmrlvi正在讨论的解决方案:它通过下一个函数跳过第一行(标题):
import csv
with open('TAB.csv','rb') as input_file:
reader = csv.reader(input_file)
output_file = open('output.csv','w')
next(reader, None)
for row in reader:
row_str = row[3]
output_file.write(row_str + '\n')
output_file.close()
答案 1 :(得分:6)
试试这个:
import csv
with open('TAB.csv', 'rb') as f, open('out.txt', 'wb') as g:
reader = csv.reader(f)
reader.next() # skip header
g.writelines(row[3] + '\n' for row in reader)
答案 2 :(得分:3)
enumerate
是一个很好的函数,它返回一个元组。它允许在迭代器上运行时查看索引。
import csv
with open('NEW.txt','wb') as outfile:
with open('TAB.csv','rb') as f:
reader = csv.reader(f)
for index, row in enumerate(reader):
if index > 0:
outfile.write(row[3])
outfile.write("\n")
另一个解决方案是从文件中读取一行(为了跳过标题)。
答案 3 :(得分:2)
这是一个古老的问题,但我想补充一下关于熊猫图书馆的答案,我想说。最好将Pandas库用于此类任务,而不是编写自己的代码。而Pandas的简单代码就像:
import pandas as pd
reader = pd.read_csv('TAB.csv', header = None)