在python 2中,我想获取一个字符串,并将其存储在一个数组中,分隔符是从单词/数字到符号以及空格的变化,反之亦然。希望有一个函数可以做到这一点。示例:
"54 3 'hello world' 5+4"
将返回
["54", "3", "'hello world'", "5", "+", "4"]
我使用re.findall(r"[w']+", text)
来获得所有单词/数字的列表,但在整理符号时我遇到了麻烦。
您可以使用下面这样的解决方法,但您没有指定所有可能的符号。
>>> import re
>>> s = "54 3 'hello world' 5+4"
>>> re.findall(r"('[^']*'|w+|[^ws]+)", s)
['54', '3', "'hello world'", '5', '+', '4']
更严格的方法是:
>>> re.findall(r"('[^']*'|[a-z0-9]+|[^a-z0-9s]+)", s, re.I)
import re
x="""54 3 'hello world' 5+4"""
print [x for x in re.split(r"[ ](?![^']*'(?:[^']*'[^']*')*[^']*$)|([+*-])",x) if x]
您可以通过re module
进行尝试。
您可以使用以下模式进行拆分:
>>> [i for i in re.split(r'(?<![a-zA-Z]) |([+-*\])',s) if i]
['54', '3', "'hello world'", '5', '+', '4']
(?<![a-zA-Z])
是基于前面没有任何单词字符的空格的拆分后的否定外观!