我正在尝试使用此字符串创建一个浮点数:4\xb1.3189125061
我目前正在使用这个:
re.sub(r'[^\d.-]+', "", "4\xb1.3189125061")
但这仅输出:4.3189125061
并始终删除\xb
后面的数字。
有人知道解决方案吗?
答案 0 :(得分:2)
Python看到\xb1
转义码的一个字符。 1
不是单独的字符:
>>> len('\xb1')
1
因此,它不是数字,点或短划线,正则表达式将其删除。
您可能需要弄清楚\xb1
字节在原始数据中的含义。例如,在Latin-1中,B1代码点代表±
字符,使您的值看起来像:
4 ± .3189125061
可能与您提供的内容有不同的含义。
答案 1 :(得分:0)
如使用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'
>>>