繁体   English   中英

用多个定界符对字符串进行分区

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM