什么是将异构的标量列表转换为字符串的pythonic方法

时间:2011-03-24 01:47:20

标签: python

我有一个包含字符串整数和浮点数的列表。我想将它转换为字符串并将其保存到文件(CSV格式) - 我不想手动转换每个字段 - 但我也不想使用CSV解析模块,因为它对于快速和脏的脚本来说太重了其格式永不改变。

这样做的pythonic方法是什么? “”.join()“模式”失败,因为列表包含非字符串成员。

4 个答案:

答案 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 docsthis 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模块,我认为您并不太关注它。