从字符串中删除所有非数字时出现问题

2024-04-18 10:13:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用这个字符串创建一个浮点:4\xb1.3189125061 我当前使用的是:

re.sub(r'[^\d.-]+', "", "4\xb1.3189125061")

但是这只输出:4.3189125061,并且总是删除\xb后面的数字。 有人知道解决这个问题的办法吗?在


Tags: 字符串re数字浮点办法xb试图用
2条回答

Python在\xb1转义代码中看到一个字符。1不是单独的字符:

>>> len('\xb1')
1

因此,它不是数字、点或短划线,正则表达式会将其删除。在

您可能需要弄清楚\xb1字节在原始数据中的含义。例如,在拉丁语-1中,B1码位代表±字符,使您的值看起来像:

^{pr2}$

可能和你给它的含义不同。在

如使用ord所示,“\xb1”是单个字符:

>>> ord('\xb1')
177
>>>

要解决此问题,可以在字符串前面添加一个“r”:

^{pr2}$

或使用repr

>>> import re
>>> re.sub(r'[^\d.-]+', "", repr("4\xb1.3189125061"))
'41.3189125061'
>>>

相关问题 更多 >