我的字符串具有以下格式:
string = 'token1 -token2 +"token 3"'
我想按如下方式提取 token 和字段:
result = [
'token1',
'-token2',
'+token 3'
]
我正在使用 csv
模块,但未能成功获取最后一个标记为 '+"token', '3"'
# for Python 2.x
try: from StringIO import StringIO
# for Python 3.x
except ImportError: from io import StringIO
import csv
f = StringIO('token1 -token2 +"token 3"')
tokens = csv.reader(f, delimiter=' ', doublequote=False, quotechar='"', quoting=csv.QUOTE_NONE)
for t in tokens: print(t)
# > ['token1', '-token2', '+"token', '3"']
最佳答案
我为这个特定案例编写了一个客户拆分器,因为格式太具体了。下面的代码适用于提供的输入。
# for Python 2.x
try: from StringIO import StringIO
# for Python 3.x
except ImportError: from io import StringIO
import csv
f = StringIO('token1 -token2 +"token 3"')
def check_and_split(line):
tokens = []
is_quote = False
token = ''
for c in line:
if c == ' ' and (not is_quote):
is_quote = False
tokens.append(token)
token = ''
elif c == '"':
is_quote = True
else:
token += c
tokens.append(token)
return tokens
for line in f:
tokens = check_and_split(line)
for t in tokens:
print(t)
输出:
token1
-token2
+token 3
关于python 通过分隔符分割字符串,仅当它在引号之外时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56382556/