首页 > 解决方案 > 将带有“\x”字符的字符串转换为浮点数

问题描述

我正在使用将字符串转换为浮点数float(x)。但是由于某种原因,其中一个字符串是"71.2\x0060". 我试过遵循这个答案,但它不会删除字节字符

>>> 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

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

标签: python-3.x

解决方案


不幸的是,模块\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


推荐阅读