我正在尝试拆分包含python函数的字符串,以便结果输出保持单独的函数作为列表元素。s='hello()there()'
应拆分为['hello()', 'there()']
为此,我使用regex lookahead在右括号处拆分,而不是在字符串末尾。
虽然lookahead看起来很有效,但是我不能像很多文章中建议的那样在结果字符串中保留)
,简单地用regex拆分会丢弃分隔符:
import re
s='hello()there()'
t=re.split("\)(?!$)", s)
这导致:'hello(', 'there()']
.
s='hello()there()'
t=re.split("(\))(?!$)", s)
Wrapping the separator as a group导致)
被保留为单独的元素:['hello(', ')', 'there()']
与this approach using the filter()
function相同:
s='hello()there()'
u = list(filter(None, re.split("(\))(?!$)", s)))
再次导致括号作为单独的元素:['hello(', ')', 'there()']
如何拆分这样的字符串,使函数在输出中保持完整?
2条答案
按热度按时间wnavrhmk1#
使用**
re.findall()
**\w+\(\)
匹配一个或多个单词字符,后跟一个左右括号〉该部分匹配hello()
和there()
版本:
\w+\(.*?\)
:匹配一个或多个单词字符,包括下划线后跟左括号和右括号。.*?
是非贪婪匹配,表示它将匹配括号中尽可能少的字符。一个二个一个一个
zbwhf8kr2#
您可以拆分为
()
的lookbehind和字符串末尾的negative lookahead。