在Python中,我想区分像²这样的指数和像2这样的常规数字。我有弦mystrings = ['2something', 'something3', 'm²', 'pcs.']
我想去掉除了指数以外的所有正常数。我目前的解决方案无法做到这一点:[re.findall(r'[a-zA-Z]+\.?', mystring)[0] for mystring in mystrings]
它返回['something',' something','m','pcs.'],但我想得到['something',' something','m ','pcs.']作为结果。
2条答案
按热度按时间i2loujxw1#
您可以使用
re.sub(r'\d+', '', mystring)
删除“内联”数字,因为普通数字包含在 meta序列\d
中,而指数等则不包含。kdfy810k2#
Python内置的
re
还不支持Unicode属性等,但第三方库regex
支持:...其中
\p{No}
匹配Other_Number
类别中的任何字符。试试on regex101.com。
然而,这也将匹配下标数字和任何非0到9的数字。为了避免匹配不需要的字符,您可以以
re
兼容的方式指定所有上标数字:试试on regex101.com。