python - write - 我怎样才能将一个列表加入到一个字符串(警告)?




typeerror: a bytes-like object is required not 'str' (2)

沿着我以前的问题的线,我怎么可以加入一个字符串列表到一个字符串,使价值得到干净引用。 就像是:

['a', 'one "two" three', 'foo, bar', """both"'"""]

成:

a, 'one "two" three', "foo, bar", "both\"'"

我怀疑csv模块会在这里发挥作用,但我不知道如何得到我想要的输出。


使用csv模块你可以这样做:

import csv
writer = csv.writer(open("some.csv", "wb"))
writer.writerow(the_list)

如果您需要一个字符串,只需使用StringIO实例作为一个文件:

f = StringIO.StringIO()
writer = csv.writer(f)
writer.writerow(the_list)
print f.getvalue()

输出: a,"one ""two"" three","foo, bar","both""'"

csv将以一种可以稍后回读的方式写入。 你可以通过定义一个dialect调整它的输出,只需要根据需要设置quotecharescapechar等:

class SomeDialect(csv.excel):
    delimiter = ','
    quotechar = '"'
    escapechar = "\\"
    doublequote = False
    lineterminator = '\n'
    quoting = csv.QUOTE_MINIMAL

f = cStringIO.StringIO()
writer = csv.writer(f, dialect=SomeDialect)
writer.writerow(the_list)
print f.getvalue()

输出: a,one \"two\" three,"foo, bar",both\"'

csv模块可以使用相同的方言来读取后面的字符串列表。


在一个相关的说明,Python的内置编码器也可以做字符串转义:

>>> print "that's interesting".encode('string_escape')
that\'s interesting




csv