mau*_*lus 5 python regex string split
我有很多Python字符串如"A7*4","Z3+8","B6 / 11",和我想要拆分这些字符串,这样他们将在一个列表,格式["A7", "*", "4"],["B6", "/", "11"]等我已经使用了很多不同的方法分割,但我想我需要只需执行有数学符号的分割,例如/,*,+,-.我还需要删除空白.
目前我正在使用re.split(r'(\D)', "B6 / 11")返回的代码['', 'B', '6', ' ', '', '/', '', ' ', '11'].相反,我想回来["B6", "/", "11"].
iCo*_*dez 13
从字符串中删除空格后,您应该拆分字符集 [+-/*]:
>>> 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']
>>>
Run Code Online (Sandbox Code Playgroud)
有一种方法可以使用 Python标记器在没有正则表达式的情况下解决此问题。我使用了一个更复杂的公式来展示此解决方案的功能。
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]])
Run Code Online (Sandbox Code Playgroud)
结果:
['(', 'A7', '*', '4', ')', '-', '(', 'Z3', '+', '8', ')', '-', '(', 'B6', '/', '11', ')']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4204 次 |
| 最近记录: |