如果我有
string = '((a * 5) // ((10 - y) + z))'
我只想删除a
,5
,10
,y
,z
,并将其放入
lst1 = []
我还想删除*
,-
,+
并将其放入
lst2 = []
这样做的最佳方式是什么?
答案 0 :(得分:2)
使用正则表达式(re
模块):
>>> import re
>>> NAMES_AND_VALUES = re.compile(r'\w+')
>>> OPERATORS = re.compile(r'(?:\+|\*|\-|\/)+')
>>> string = '((a * 5) // ((10 - y) + z))'
>>> NAMES_AND_VALUES.findall(string)
['a', '5', '10', 'y', 'z']
>>> OPERATORS.findall(string)
['*', '//', '-', '+']
...当然,如果需要,您可以将这些返回值存储在lst1
和lst2
中。或者,如果lst1
和lst2
是预先存在的列表对象,您可以执行lst1 += ...
和lst2 += ...
。
答案 1 :(得分:0)
请尝试以下方法:
import re
str = '((a * 5) // ((10 - y) + z))'
>> filter(None, re.split (r'[()*+ /-]', str))
['a', '5', '10', 'y', 'z']
>> filter(None, re.split ('[()0-9a-z ]', str))
['*', '//', '-', '+']