我正在尝试从这个字符串中创建一个浮点数: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'
>>>