以“列”格式将Python列表导出为CSV

时间:2014-08-16 06:16:31

标签: python csv python-3.x export-to-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 :(得分: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)

然而,你的输出中没有昏迷很奇怪,希望无论如何这都有帮助。