我有一个包含字符串整数和浮点数的列表。我想将它转换为字符串并将其保存到文件(CSV格式) - 我不想手动转换每个字段 - 但我也不想使用CSV解析模块,因为它对于快速和脏的脚本来说太重了其格式永不改变。
这样做的pythonic方法是什么? “”.join()“模式”失败,因为列表包含非字符串成员。
答案 0 :(得分:6)
我也不想使用CSV解析模块,因为它对于快速而脏的脚本而言太重了
真的,成本是多少?几毫秒的运行时间,还是几分钟的开发时间?
,其格式永不改变
那是无关紧要的。您有需要转义,引用,格式化等的数据。未来数据本身是否会发生变化,即使格式没有?无论如何,您最终都会重新发明CSV模块中的变通方法,但可能并不全面。
import csv
data_row = [1, 2.0, "three", "pi,plus,one"]
# Assuming Python 2.x
# ...in Python 3 use text mode: open("...", 'w', newline='')
with open("datafile.csv", 'wb') as datafile:
datawriter = csv.writer(datafile)
datawriter.writerow(data_row)
使用join
方法将缩短一行 - 并且假设您不需要自己进行转义等等。
(请参阅CSV writer docs和this answer了解文件打开模式背后的原因。)
答案 1 :(得分:4)
使用genex。
','.join(str(x) for x in L)
答案 2 :(得分:0)
如果您不想手动转换字段,请将作业提供给某些用户或编写一些代码。如果你不想使用“重量级”csv模块,你需要这样的代码来处理字符串中的皱纹:
def csv_escape(s):
if '"' in s:
return '"' + s.replace('"', '""') + '"'
if any(c in s for c in ",\r\n"):
return '"' + s + '"'
return s
答案 3 :(得分:0)
这个怎么样?
import json
json.dumps(mylist)
这不是传统的CSV格式,但由于您不想使用CSV模块,我认为您并不太关注它。