我正在尝试从这个字符串中创建一个浮点数:4\xb1.3189125061
我目前正在使用这个:
re.sub(r'[^\d.-]+', "", "4\xb1.3189125061")
但这仅输出:4.3189125061
并始终删除 . 后面的数字\xb
。有谁知道解决这个问题?
我正在尝试从这个字符串中创建一个浮点数:4\xb1.3189125061
我目前正在使用这个:
re.sub(r'[^\d.-]+', "", "4\xb1.3189125061")
但这仅输出:4.3189125061
并始终删除 . 后面的数字\xb
。有谁知道解决这个问题?
Python 看到一个字符作为\xb1
转义码。1
不是一个单独的字符:
>>> len('\xb1')
1
因此,它不是数字、点或破折号,正则表达式将其删除。
您可能需要弄清楚该\xb1
字节在原始数据中的含义。例如,在 Latin-1 中,B1 代码点代表±
字符,使您的值看起来像:
4 ± .3189125061
这可能与您给出的含义不同。
如使用 所示ord
,"\xb1" 是单个字符:
>>> ord('\xb1')
177
>>>
要解决此问题,您可以在字符串前面添加一个“r”:
>>> import re
>>> re.sub(r'[^\d.-]+', "", r"4\xb1.3189125061")
'41.3189125061'
>>>
或使用repr
:
>>> import re
>>> re.sub(r'[^\d.-]+', "", repr("4\xb1.3189125061"))
'41.3189125061'
>>>