gpt4 book ai didi

python - 特殊情况下的 re.split()

转载 作者:太空狗 更新时间:2023-10-30 02:47:51 25 4
gpt4 key购买 nike

我是正则表达式的新手,对 re.split 功能有疑问。

在我的例子中,拆分必须关心“特殊转义”。

文本应在 ; 处分隔,但有一个前导 ?

编辑:在这种情况下,不应拆分这两部分,并且必须删除 ?

这里是一个例子和我希望的结果:

import re
txt = 'abc;vwx?;yz;123'
re.split(r'magical pattern', txt)
['abc', 'vwx;yz', '123']

到目前为止我尝试了这些尝试:

re.split(r'(?<!\?);', txt)

得到:

['abc', 'vwx?;yz', '123']

可悲的是导致未消耗 ? 麻烦,以下列表理解对性能至关重要:

[part.replace('?;', ';') for part in re.split(r'(?<!\?);', txt)]
['abc', 'vwx;yz', '123']

有没有一种“快速”的方法可以用 re 重现该行为?

re.findall 函数可以作为解决方案吗?

例如这段代码的扩展版本:

re.findall(r'[^;]+', txt)

我正在使用 python 2.7.3。

谢谢你的期待!

最佳答案

Regex 不是这项工作的工具。请改用 csv 模块:

>>> txt = 'abc;vwx?;yz;123'
>>> r = csv.reader([txt], delimiter=';', escapechar='?')
>>> next(r)
['abc', 'vwx;yz', '123']

关于python - 特殊情况下的 re.split(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15575420/

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