我想在逗号处拆分 Python 多行字符串,除非逗号位于括号表达式内。例如,字符串
{J. Doe, R. Starr}, {Lorem
{i}psum dolor }, Dol. sit., am. et.
应该拆分成
['{J. Doe, R. Starr}', '{Lorem\n{i}psum dolor }', 'Dol. sit.', 'am. et.']
这涉及括号匹配,因此正则表达式可能在这里无济于事。 PyParsing有commaSeparatedList
除了 quoted ("
) 环境而不是 {}
-delimited 环境,这几乎做了我需要的.
有什么提示吗?
最佳答案
编写您自己的自定义拆分函数:
input_string = """{J. Doe, R. Starr}, {Lorem
{i}psum dolor }, Dol. sit., am. et."""
expected = ['{J. Doe, R. Starr}', '{Lorem\n{i}psum dolor }', 'Dol. sit.', 'am. et.']
def split(s):
parts = []
bracket_level = 0
current = []
# trick to remove special-case of trailing chars
for c in (s + ","):
if c == "," and bracket_level == 0:
parts.append("".join(current))
current = []
else:
if c == "{":
bracket_level += 1
elif c == "}":
bracket_level -= 1
current.append(c)
return parts
assert split(input_string), expected
关于python - 在逗号处拆分字符串,除非在括号环境中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26808913/