我有一个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
个值?
答案 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