现在我有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)
有没有人有任何想法如何转置数据?谢谢!
答案 0 :(得分:2)
从版本2.3开始,Python已经有a builtin module for parsing csv data。你有什么理由不能使用它吗?
要给出答案,特别是关于代码的答案,这是我注意到的:
a_file.write(result + ',')
print(result)
您正在将数据写入附加逗号的文件,并将其单独打印到命令行。所以它出现在命令行上,每行有一个输出,但是它被打印到文件中:
result1,result2,result3,result4...
所有CSV文件略有不同,但逗号通常用于分隔字段,而换行符用于分隔行。您正在获得正在输出的内容:一行包含您的所有值,在单独的逗号分隔字段中。试试这个:
a_file.write(result + '\n')
如果您使用的是Python 3,那么您也可以使用打印功能:
print(result, file=a_file)
答案 1 :(得分: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)
答案 2 :(得分: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)
然而,你的输出中没有昏迷很奇怪,希望无论如何这都有帮助。