打印列表到文件
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
的创建方式。
我有一个如下所示的列表:
[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
的创建方式。