如何在文件夹中找到各种类型的csv文件的列标题?

时间:2017-02-21 16:45:22

标签: python python-2.7 python-3.x csv

我有一个问题,我需要使用不同的列位置来摄取不同的文件。一个文件列可能会向下开始4行,而另一个文件列可能从第一行开始。

一个文件可能如下所示:

This
is
a
column 1, column 2, column 3, column 4

另一个可能在第1行有这样的列:

column 1, column 2, column 3

我需要获取每个文件列标题的列表。我认为列标题是一个大于3项的列表。如果我使用csv模块,我怎么写这个?

我有类似的东西:

temprow = next(csvfile)

for value in temprow:
    if value == '':
        temprow = next(csvfile)
    if len(value) > 3:
        header = temprow
    else:
        header = temprow

这不是很有效,因为它还返回包含1个字符串的列。

2 个答案:

答案 0 :(得分:1)

试试这个:

with open('yourfile.csv', 'r') as f:
    for line in f:                        # iterate for each line
        if "," in line:                   # the header line should contain comma     
            header = line          
            break                         # break the loop when header line is found

print(header)

输出:

column 1, column 2, column 3, column 4

答案 1 :(得分:-1)

根据您帖子中的规范,此代码有效。它返回.csv文件中的第一行,该文件包含4个或更多元素(“大于3个项目”)。

headers = []                                        # Column names will be appended to this list
files = ['./test']                                  # Insert files here

for f in files:                                     # Loop over files
    with open(f, 'r') as fh:                        # Open file
        reader = csv.reader(fh, delimiter = ',')    # Create reader
        for row in reader:                          # Loop over rows
            if len(row) >= 4:                       # Criteria for appending to headers
                headers.append(row)