将带有“ \ x”字符的字符串转换为浮点型

时间:2019-09-24 21:09:36

标签: python-3.x

我正在使用float(x)将字符串转换为浮点数。但是,由于某些原因,字符串之一是"71.2\x0060"。我已尝试遵循此answer,但不会删除字节字符

>>> s = "71.2\x0060"
>>> "".join([x for x in s if ord(x) < 127])
'71.2\x0060'

我尝试过的其他方法是:

>>> s.split("\\x")
['71.2\x0060']
>>> s.split("\x")
ValueError: invalid \x escape

我不确定为什么该字符串的格式不正确,但是我想从此字符串中获得尽可能高的精度并继续前进。

2 个答案:

答案 0 :(得分:0)

根据wim的评论,答案可能是这样:

>>> s.split("\x00")
['71.2', '60']

所以我应该这样做:

>>> float(s.split("\x00")[0])
71.2

答案 1 :(得分:0)

很遗憾,\p{XDigit}模块中不存在POSIX组re。无论如何要删除带有正则表达式的十六进制控制字符,您可以尝试以下操作。

impore re
re.sub(r'[\x00-\x1F]', r'', '71.2\x0060')  # or:
re.sub(r'\\x[0-9a-fA-F]{2}', r'', r'71.2\x0060')

输出:

'71.260'
'71.260'

r表示原始。在ASCII表中查看最大为十六进制1F的控制字符:https://www.torsten-horn.de/techdocs/ascii.htm