我想以逗号分隔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
这
几乎 做什么我需要的,只是 引用 ("
)环境得到保护,而不是{}
-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
问题内容: 我有一个像 我想把它分成那些字符串 如果我简单地打电话给我,那么在修剪之后我会得到不同的结果,因为在某些字符串中,例如,仍然有一个逗号。但我不想放在方括号中。有解决这个问题的优雅方法吗? 问题答案: 假设和没有嵌套和未转义。您可以使用以下方式进行拆分: 正则演示 如果逗号后面没有非圆括号和,则将匹配逗号,从而忽略和中的逗号。
问题内容: 我有一个像这样的字符串: 上面的字符串应分为: 问题答案: 我认为最简单的解决方案是处理输入字符串char-by-char: 例: 作为免费赠品,此解决方案还根据需要计算嵌套括号: 它还检查括号是否平衡(每个开放的括号都有相应的结束符)。
因此,这将匹配以下逗号分隔的字符串: 然后,我可以使用对非字符执行相同的操作,它将匹配: 我想创建一个regex来匹配包含特殊字符、连字符和下划线的字符串,例如。 下面是另一个例子: 这是无效的,因为有两个逗号;必须只有一个。
问题内容: 我从数据库中得到了String,它有多个逗号()。我想删除 最后一个逗号, 但实际上找不到一种简单的方法。 我有的: 我想要的是: 问题答案: 要删除紧随字符串结尾的部分,您可以执行以下操作: 相对于/ solution,它需要对此类情况进行特殊处理,这可以优雅地处理空列表(空字符串)。 示例代码: 注意: 由于存在有关零件的一些注释和建议的编辑:表达式应与要删除的尾部零件匹配。 如果
我有一个长字符串,只要逗号不在方括号或圆括号内,我想通过用逗号将其拆分来将其设置为数组。我已经尝试了一些变化,但没有得到我想要的。。。 例1: 例2:
我有一个字符串,我想用逗号爆炸,但前提是逗号没有嵌套在一些括号内。这是一个相当常见的用例,我一直在阅读这个论坛上的回复帖子,但没有真正找到我要找的东西。 所以,具体来说:重点是,我有一个字符串(=SQL SELECT…FROM语句),我想从列表中提取元素,用逗号分隔,用这个字符串编码(=要从中选择的列的名称)。但是,这些元素可以包含方括号,实际上是函数调用。例如,在SQL中,可以这样做 显然,我想