2024-10-01 11:41:35 发布
网友
这是我的str示例,我需要在最后一个单词附近保存分隔符,如点、破折号和空格
str示例:
a = 'Beautiful. is. better5-than ugly'
我尝试的
re.split('\W+', a) ['Beautiful', 'is', 'better5', 'than', 'ugly']
预期输出:
['Beautiful.', ' ', 'is.', ' ', 'better5-', 'than', ' ', 'ugly']
可能吗
>>> import re >>> a = 'Beautiful. is. better5-than ugly' >>> re.findall("\w+[.-]?|\s+", a) ['Beautiful.', ' ', 'is.', ' ', 'better5-', 'than', ' ', 'ugly']
\w+[.-]?
\s+
|
因为我们希望分隔符成为结果的一部分,所以我们应该保留它们,我在正则表达式中使用了“lookback”和“lookahead”断言。您可以在^{} module's documentation中阅读有关它们的信息
import re a = 'Beautiful. is. better5-than ugly' print(re.split(r'(?<=[-. ])|(?= )', a))
附加说明:使用“lookbehind”断言,我可以获得几乎相同的结果,但是对于最后一个单词“than”,我需要在我的正则表达式模式中包含一个“lookbehind”断言(我的意思是|(?= )),以分割该空间
|(?= )
\w+[.-]?
将单词与结尾处可选的点或连字符匹配李>\s+
匹配空白李>|
确保我们捕获上述任一项李>因为我们希望分隔符成为结果的一部分,所以我们应该保留它们,我在正则表达式中使用了“lookback”和“lookahead”断言。您可以在^{} module's documentation 中阅读有关它们的信息
附加说明:使用“lookbehind”断言,我可以获得几乎相同的结果,但是对于最后一个单词“than”,我需要在我的正则表达式模式中包含一个“lookbehind”断言(我的意思是
|(?= )
),以分割该空间相关问题 更多 >
编程相关推荐