从python中的csv文件头读取n个值的问题

时间:2016-05-11 06:59:16

标签: python csv

我有一个csv文件(制表符分隔),其样本格式为:

"col1   col2    col3    col4    col5"
"15 AMC 0.0 0.0 0.0"

现在我有一个变量n,表示我想从这个csv文件的标题中读取的值的数量。因此,如果n = 3,我想在标题中读取前3个值,并形成像['col1','col2','col3']这样的列表。我写了这段代码来读取制表符分隔的csv文件,但我遇到了一些问题:

n = 3 # number of values to be extracted from header of csv.Will vary

file = open('file1.csv','rU')
read = csv.reader(file,delimiter='\t')

row_number = 0

for row in read:
    if row_number == 0:
       header = row
       break

当我print header时,我得到['col1\tcol2\tcol3\tcol4\tcol5']。如何从csv文件的标题中提取n个值?

3 个答案:

答案 0 :(得分:2)

我假设双引号(")在你显示它们时在文件中,所以它们将引用整行,并且在引用的字符串中忽略分隔符。在将行传递给csv阅读器之前,您必须删除这些引号:

file = open('file1.csv','rU')

lines = [line.strip().strip('"') for line in file]  # strip white space, too, to be sure

read = csv.reader(lines, delimiter='\t')  
# any iterable producing strings will do in the reader constructor

答案 1 :(得分:0)

您所拥有的不是CSV文件,而只是一个引用了两行的文件。尝试使用csv模块解析此问题只会导致错误。

相反,这样做:

n = 3

with open('file1.csv') as f
   header = next(f)[1:-1].split('')
   print('Header: {}'.format(header))
   print('First {} columns of header: {}'.format(n, header[:n]))
   for line in f:
      row = line[1:-1].split('')
      print('Complete row: {}'.format(row))
      print('First {} columns: {}'.format(n, row[:n]))

答案 2 :(得分:-1)

我的猜测是它没有拆分它是因为它不是由制表符分隔而是由4个空格分隔。要获得n的数量,你要写行[:n]。 试试这个:

n = 3 # number of values to be extracted from header of csv.Will vary

file = open('file1.csv','rU')
read = csv.reader(file,delimiter=' '*4)

row_number = 0

for row in read:
    if row_number == 0:
       header = row[:n]
       break