如何从 csv 中读取没有 header 的列并使用 Python 将输出保存在 txt 文件中?

How to read a column without header from csv and save the output in a txt file using Python?

我有一个包含很多列的文件 "TAB.csv"。我想从 CSV 文件中选择一列没有 header(该列的索引为 3)。然后创建一个新的文本文件 "NEW.txt" 并在其中写入该列(没有 header)。

下面的代码读取该列,但带有 header。如何省略 header 并将该列保存在新的文本文件中?

import csv
with open('TAB.csv','rb') as f:
    reader = csv.reader(f)
    for row in reader:
        print row[3]

enumerate 是一个很好的函数,returns 是一个元组。它允许在 运行 通过迭代器时查看索引。

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")

另一种解决方案是从文件中读取一行(以跳过 header)。

这是@tmrlvi 所说的解决方案:它通过下一个函数跳过第一行(header):

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()

试试这个:

import csv

with open('TAB.csv', 'rb') as f, open('out.txt', 'wb') as g:
    reader = csv.reader(f)
    next(reader)            # skip header
    g.writelines(row[3] + '\n' for row in reader)

这是一个老问题,但我想补充一下我对 Pandas 图书馆的回答,我想说。最好使用 Pandas 库来完成此类任务,而不是编写自己的代码。 Pandas 的简单代码如下:

import pandas as pd
reader = pd.read_csv('TAB.csv', header = None)