[英]Partitioning a string with multiple delimiters
我知道partition()存在,但是它只接受一个值,我试图围绕各种值进行分区:
例如说我想对字符串中的符号进行分区:
输入:“ function():”
输出:[“ function”,“(”,“)”,“:”]
我似乎找不到有效的方法来处理可变数量的分区。
您可以将re.findall
与与单词或非空格字符匹配的交替模式一起使用:
re.findall(r'\w+|\S', s)
因此,给定s = 'function():'
,它将返回:
['function', '(', ')', ':']
您可以用\\W
re.split
,并使用(...)
保留定界符,然后删除空白部分。
>>> import re
>>> s = "function(): return foo + 3"
>>> [s for s in re.split(r"(\W)", s) if s.strip()]
['function', '(', ')', ':', 'return', 'foo', '+', '3']
请注意,这将在每个特殊字符后分开; 如果要将某些特殊字符组(例如==
或<=
放在一起,则应首先使用|
测试|
。
>>> s = "function(): return foo + 3 == 42"
>>> [s for s in re.split(r"(\W)", s) if s.strip()]
['function', '(', ')', ':', 'return', 'foo', '+', '3', '=', '=', '42']
>>> [s for s in re.split(r"(==|!=|<=|\W)", s) if s.strip()]
['function', '(', ')', ':', 'return', 'foo', '+', '3', '==', '42']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.