打印列表到文件

Printing list to file

我有一个如下所示的列表:

[u'first              ', u'second         ']

我想要一个如下所示的文件:

first    second

每行中的文件条目应以制表符分隔。这是我所做的:

with open ('output','wb') as f1:
    f1.write('COLUMN1'+'\t'+'COLUMN2'+'\n')
        for element in mylist:
            f1.write(element+'\t')
        f1.write('\n')

文件打开后看起来没问题。但是,当我在 Pandas:

中打开它时
tmp=pd.read_csv('output',delimiter='\t')
print tmp.head()

一切都搞砸了:

                              COLUMN1                      COLUMN2
0  first                       second                         NaN

我做错了什么?

我建议使用 csv writer 来制作 csv。例如:

header = ['COLUMN1', 'COLUMN2']

mylist =  [[u'first              ', u'second         '],
           [u'val1              ', u'val2         ']]

with open('out.csv', 'wb') as f:
    csvwriter = csv.writer(f, delimiter='\t')

    csvwriter.writerow(header)
    for row in mylist:
        csvwriter.writerow([c.strip() for c in row])


import pandas as pd

tmp = pd.read_csv('out.csv', delimiter='\t') 

打印(tmp)

这导致:

  COLUMN1 COLUMN2
0   first  second
1    val1    val2

如果您不想使用 csv,只需这样做:

with open ('out.csv','w') as f1:
    f1.write('COLUMN1'+'\t'+'COLUMN2'+'\n')
    for row in mylist:
        f1.write("\t".join(v.strip() for v in row) + "\n")

假设列中的值本身不包含空格,您可以使用 \s+ 使 1 个或多个空格 成为分隔符的正则表达式模式列:

In [87]: pd.read_table('output', delimiter=r'\s+')
Out[87]: 
  COLUMN1 COLUMN2
0   first  second

因此,可能不需要更改 output 的创建方式。