Jer*_*ell 24 python quotes split escaping
我需要能够得到一个字符串:
'''foo, bar, "one, two", three four'''
Run Code Online (Sandbox Code Playgroud)
成:
['foo', 'bar', 'one, two', 'three four']
Run Code Online (Sandbox Code Playgroud)
我有一种感觉(来自#python的提示)该解决方案将涉及shlex模块.
Dan*_*ski 40
这取决于你想要获得多么复杂...你想允许多种类型的引用.逃脱报价怎么样?
您的语法非常类似于Python标准库支持的常见CSV文件格式:
import csv
reader = csv.reader(['''foo, bar, "one, two", three four'''], skipinitialspace=True)
for r in reader:
print r
Run Code Online (Sandbox Code Playgroud)
输出:
['foo', 'bar', 'one, two', 'three four']
Run Code Online (Sandbox Code Playgroud)
HTH!
nos*_*klo 27
shlex模块解决方案允许转义引号,一个引用转义另一个,以及所有花哨的东西shell支持.
>>> import shlex
>>> my_splitter = shlex.shlex('''foo, bar, "one, two", three four''', posix=True)
>>> my_splitter.whitespace += ','
>>> my_splitter.whitespace_split = True
>>> print list(my_splitter)
['foo', 'bar', 'one, two', 'three', 'four']
Run Code Online (Sandbox Code Playgroud)
转义引用示例:
>>> my_splitter = shlex.shlex('''"test, a",'foo,bar",baz',bar \xc3\xa4 baz''',
posix=True)
>>> my_splitter.whitespace = ',' ; my_splitter.whitespace_split = True
>>> print list(my_splitter)
['test, a', 'foo,bar",baz', 'bar \xc3\xa4 baz']
Run Code Online (Sandbox Code Playgroud)