将Python列表导出为“列”格式的CSV
现在我有一段Python 3代码,它可以从一个CSV文件中读取一列数据,然后把每个单元格里的短语根据空格分割成单独的单词。
我现在想做的是把这些数据再导出回CSV文件,并且希望它以列的格式呈现,也就是说每个单元格里只放一个单词。
Keyword
Lions
Tigers
Bears
Dog
Cats
目前,我的代码可以把数据导出到CSV文件,但导出的格式是行,而不是我想要的列。
Keyword Lions Tigers Bears Dog Cats
当我在解释器中打印我的代码时,数据是以列的格式正确显示的,但导出时却不行!这是我的代码:
with open(b'C:\Users\j\Desktop\helloworld.csv', 'r') as datafile:
data = []
for row in datafile:
data.extend(item.strip() for item in row.split())
with open('test.csv', 'w') as a_file:
for result in data:
result = ''.join(result)
a_file.write(result + ',')
print(result)
有没有人知道怎么把数据转置成我想要的格式?谢谢!
3 个回答
0
我不知道result
是什么样子的,但我想说你需要明确告诉程序你想换行:
with open('test.csv', 'w') as a_file:
for result in data:
result = ''.join(result)
a_file.write(result + ',') # if you want to keep the coma, or replace ',' by '\n'
a_file.write("\n")
print(result)
不过,你的输出中没有逗号这点很奇怪,希望这些信息对你有帮助。
2
从2.3版本开始,Python就有了一个内置的模块,可以用来解析csv数据。你有没有想过为什么不使用这个模块呢?
不过,针对你的代码,我注意到了一些问题:
a_file.write(result + ',')
print(result)
你把数据写入文件时是用逗号分隔的,而在命令行上是单独打印的。所以在命令行上每一行显示一个输出,但在文件里的内容是这样的:
result1,result2,result3,result4...
所有的CSV文件都有些许不同,但一般来说,逗号用来分隔字段,而换行符用来分隔行。你得到的正是你输出的结果:一行里包含了所有的值,都是用逗号分开的字段。你可以试试这样做:
a_file.write(result + '\n')
如果你使用的是Python 3,你也可以使用print函数:
print(result, file=a_file)
1
你可以使用
"\n"
来让它写在下一行。
with open(b'C:\Users\j\Desktop\helloworld.csv', 'r') as datafile:
data = []
for row in datafile:
data.extend(item.strip() for item in row.split())
with open('test.csv', 'w') as a_file:
for result in data:
result = ''.join(result)
a_file.write(result + '\n') <--
print(result)