【问题标题】:List to csv delimited by comma and new line python以逗号和换行符分隔的 csv 列表 python
【发布时间】:2020-12-16 00:34:01
【问题描述】:

我有一个要写入 CSV 文件的列表,我希望它用逗号分隔,后跟换行符。 我已经尝试过 writerows 但这会拆分所有字符。 我试过 writerow 但这给了我一行,用逗号分隔,但每个条目都没有换行符。

我的尝试

import  csv

mylist = ['AFCIEUR ID', 'CSCIB25 LX' , 'GAMCOIE ID']

writer = open("my_EQ_IDs.csv", 'w+')
writer_out = csv.writer(writer,delimiter='\n')
fields = ['SYMBOL']
writer_out.writerow(fields)
writer_out.writerows(mylist)

这给了我

SYMBOL

A
F
C
I
E
U
R
 
I
D

C
S
C
I
B
2
5
 
L
X

G
A
M
C
O
I
E
 
I
D

如果我使用 writerow 而不是 writerows 我会得到以下结果

SYMBOL

AFCIEUR ID
CSCIB25 LX
GAMCOIE ID

这与我想要的很接近,但它没有按我的需要用逗号分隔。我尝试将分隔符添加为delimiter=',\n',但这给了我一个错误TypeError: "delimiter" must be a 1-character string

我需要(预期输出)

SYMBOL

AFCIEUR ID,
CSCIB25 LX,
GAMCOIE ID

谁能告诉我我做错了什么并指出正确的方向?

非常感谢!

【问题讨论】:

  • 分隔符可以用逗号吗?分隔符=',\n'
  • 我试过了,你得到TypeError: "delimiter" must be a 1-character string的错误

标签: python


【解决方案1】:

实际结果是由于字符串是可迭代的。您将一个字符串列表传递给writerows,它需要一个可迭代的可迭代对象。因此,值的每个字符都被视为一个字段,后跟您设置为新行的字段分隔符。

但预期的文件不是有效的 csv 文件。当 Python csv 模块仅将分隔符定义为单个字符时,您使用序列 ',\n'(2 个字符)作为分隔符。所以你不能指望 csv 模块产生预期的结果......

这意味着您应该手动编写文件。使用join很容易:

with open("my_EQ_IDs.csv", 'w+') as writer:
    print('SYMBOL', file=writer)
    print(',\n'.join(mylist), file=writer)

【讨论】:

  • 非常感谢@Serge Ballesta!您提供了解决方案以及关于join 的教学,我现在将对其进行研究。
【解决方案2】:

尝试在分隔符中包含逗号:delimiter=',\n'

【讨论】:

  • 我试过了,你得到TypeError: "delimiter" must be a 1-character string的错误
【解决方案3】:

尝试使用 lineterminator='\n' 和 delimiter=',' - 应该可以。

【讨论】:

  • 这不能按预期工作,它会打印SYMBOL AFCIEUR ID,CSCIB25 LX,GAMCOIE ID
【解决方案4】:

我能想到的最简单的方法是:

mylist = ['AFCIEUR ID', 'CSCIB25 LX' , 'GAMCOIE ID']
with open('my_output_file.csv','w') as f:
    for item in mylist:
        f.write(f'{item},\n')

【讨论】:

  • 你可以使用 f.write(",\n".join(myList)) 来避免尾随逗号
  • 谢谢 alec 和 Frederik.. 解决方案确实奏效了,对此我深表感谢。但是,我接受了一个更有效的答案。谢谢你的帮助!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 2018-04-02
相关资源
最近更新 更多