gpt4 book ai didi

python - 如果未包含分隔符,则将字符串拆分为列表

转载 作者:行者123 更新时间:2023-12-01 05:35:20 25 4
gpt4 key购买 nike

我正在开发一个简单的维基引擎,我想知道是否有一种有效的方法可以根据分隔符将字符串拆分为列表,但前提是该分隔符没有用双方括号或双花括号括起来括号。

所以,像这样的字符串:

"|Row 1|[[link|text]]|{{img|altText}}|"

将转换为如下列表:

['Row 1', '[[link|text]]', '{{img|altText}}']

编辑:从示例字符串中删除了空格,因为它们会引起困惑。

最佳答案

你可以使用

def split_special(subject):
return re.split(r"""
\| # Match |
(?! # only if it's not possible to match...
(?: # the following non-capturing group:
(?!\[\[) # that doesn't contain two square brackets
. # but may otherwise contain any character
)* # any number of times,
\]\] # followed by ]]
) # End of first loohahead. Now the same thing for braces:
(?!(?:(?!\{\{).)*\}\})""",
subject, flags=re.VERBOSE)

结果:

>>> s = "|Row 1|[[link|text|df[sdfl|kj]|foo]]|{{img|altText|{|}|bar}}|"
>>> split_special(s)
['', 'Row 1', '[[link|text|df[sdfl|kj]|foo]]', '{{img|altText|{|}|bar}}', '']

请注意前导和尾随空字符串 - 它们需要存在,因为它们确实存在于测试字符串中的第一个 | 之前和最后一个 | 之后。

关于python - 如果未包含分隔符,则将字符串拆分为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19202749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com