注意:我知道这应该是非常简单的。不是。或者我很蠢。但我努力了。
我想做的很简单。我有一个字符串,里面有字符串,用,
分隔,引用'
。我想解析他们。考虑是否存在\'
和\\
s。
我想以最简单,优雅和巧妙的方式做,显然。
现在,尝试一些失败的尝试:
json
!”不,JSON使用"
。太糟糕了。shlex
! Python标准库总是有一个解决方案!请参阅下面的失败尝试。测试输入:'xx\'x,x\\x"xx\\\'\\',1,2,'xx\'x\''
测试输出:xx'x,x\x"xx\'\
,1
,2
,xx'x'
def split(s):
import shlex
lex = shlex.shlex(s, posix=True)
lex.whitespace = ','
lex.whitespace_split = True
lex.commenters = ''
return list(lex)
答案 0 :(得分:1)
做到了。我之前看过csv
,但我需要大量定制它。这是函数
def parse_quoted_strings_list(s):
import csv
return next(csv.reader([s],
skipinitialspace=True,
quoting=csv.QUOTE_NONNUMERIC,
escapechar='\\',
doublequote=False,
quotechar="'"))
以下是测试
>>> test = r"""'xx\'x,x\\x"xx\\\'\\',1,2,'xx\'x\''"""
>>> map(print, parse_quoted_strings_list(test))
xx'x,x\x"xx\'\
1.0
2.0
xx'x'