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

0 投票
3 回答
2570 浏览
提问于 2025-04-18 17:29

现在我有一段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)

撰写回答