我有很多python字符串,例如"A7*4"
,"Z3+8"
,"B6 / 11"
,我希望将这些字符串拆分,以便它们位于列表中,格式为{ {1}},["A7", "*", "4"]
等。我使用了很多不同的拆分方法,但我认为我需要在有数学符号的地方执行拆分,例如["B6", "/", "11"]
。我还需要删除空格。
目前我使用的代码/,*,+,-
正在返回re.split(r'(\D)', "B6 / 11")
。相反,我想回来['', 'B', '6', ' ', '', '/', '', ' ', '11']
。
答案 0 :(得分:11)
从字符串中删除空格后,您应该在character set [+-/*]
上拆分:
>>> import re
>>> def mysplit(mystr):
... return re.split("([+-/*])", mystr.replace(" ", ""))
...
>>> mysplit("A7*4")
['A7', '*', '4']
>>> mysplit("Z3+8")
['Z3', '+', '8']
>>> mysplit("B6 / 11")
['B6', '/', '11']
>>>
答案 1 :(得分:3)
有一种方法可以使用Python tokenizer在没有正则表达式的情况下解决这个问题。我使用了一个更复杂的公式来展示这个解决方案的功能。
from io import StringIO
import tokenize
formula = "(A7*4) - (Z3+8) - ( B6 / 11)"
print([token[1] for token in tokenize.generate_tokens(StringIO(formula).readline) if token[1]])
结果:
['(', 'A7', '*', '4', ')', '-', '(', 'Z3', '+', '8', ')', '-', '(', 'B6', '/', '11', ')']