我有一个问题,我需要使用不同的列位置来摄取不同的文件。一个文件列可能会向下开始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个字符串的列。
答案 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)