保护连续的string.join()和string.split()上的逗号

Fil*_*eia 2 python

假设以下代码(注意字符串中的逗号):

>>> a = ['1',",2","3,"]
Run Code Online (Sandbox Code Playgroud)

我需要将值连接成一个字符串.天真的例子:

>>> b = ",".join(a)
>>> b
'1,,2,3,'
Run Code Online (Sandbox Code Playgroud)

后来我需要再次拆分生成的对象:

>>> b.split(',')
['1', '', '2', '3', '']
Run Code Online (Sandbox Code Playgroud)

但是,我要找的结果是原始列表:

['1', ',2', '3,']
Run Code Online (Sandbox Code Playgroud)

在此过程中保护逗号的最简单方法是什么?我提出的最佳解决方案看起来相当丑陋.

注意:逗号只是一个例子.字符串可以包含任何字符.我可以选择其他字符作为分隔符.

unu*_*tbu 5

字符串可以包含任何字符.

如果无论您使用什么作为分隔符,项目本身都可能包含分隔符,然后使用csv模块:

import csv

class PseudoFile(object):
    # http://stackoverflow.com/a/8712426/190597
    def write(self, string):
        return string
writer = csv.writer(PseudoFile())
Run Code Online (Sandbox Code Playgroud)

a使用逗号连接项目:

a = ['1',",2","3,"]
line = writer.writerow(a)
print(line)
# 1,",2","3,"
Run Code Online (Sandbox Code Playgroud)

aline以下方面恢复:

print(next(csv.reader([line])))
# ['1', ',2', '3,']
Run Code Online (Sandbox Code Playgroud)

  • 不需要`io.BytesIO`,`csv.reader`可以采用任何迭代,所以你可以给它`[line]`. (2认同)