Python 3.x 使用“转换字符串”\x";要浮动的字符

Python 3.x 使用“转换字符串”\x";要浮动的字符,python-3.x,Python 3.x,我正在使用float(x)将字符串转换为float。但是,由于某些原因,其中一个字符串是“71.2\x0060”。我已经尝试了遵循这一点,但它没有删除字节字符 >s=“71.2\x0060” >>>“.join([x表示s中的x,如果ord(x)>s.split(\\x) ['71.2\x0060'] >>>s.split(“\x”) ValueError:无效\x转义 我不知道为什么这个字符串的格式不正确,但我想从这个字符串中获得同样高的精度,然后继续。关于wim的评论,答案可能是: >>s

我正在使用
float(x)
将字符串转换为float。但是,由于某些原因,其中一个字符串是
“71.2\x0060”
。我已经尝试了遵循这一点,但它没有删除字节字符

>s=“71.2\x0060”
>>>“.join([x表示s中的x,如果ord(x)<127])
'71.2\x0060'
我尝试过的其他方法有:

>>s.split(\\x)
['71.2\x0060']
>>>s.split(“\x”)
ValueError:无效\x转义

我不知道为什么这个字符串的格式不正确,但我想从这个字符串中获得同样高的精度,然后继续。

关于wim的评论,答案可能是:

>>s.split(“\x00”)
['71.2', '60']
因此,我应该:

浮动(s.split(“\x00”)[0]) 71.2
不幸的是,
re
模块中不存在POSIX组
\p{XDigit}
。要删除正则表达式中的十六进制控制字符,可以尝试以下操作

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以下的控制字符:

字符是
\x00
在拆分后将它们连接起来:
'.Join(r'71.2\x0060.split(r'\x00'))
返回
'71.260'
。我对此感到有点不舒服(因为我不明白问题是从哪里开始的),该数字来自
71.2394
71.2727
之间的日志文件,每个数字有4个小数点。忽略这个角色并加入似乎是错误的。如果数字是
71.260\x00
,我会更高兴,因为
71.260
可能
\x00
意味着
0
?然后:
s.replace('\x00',0')
。否则,您可以在第一个re.sub参数中使用
r'[\x00-\x1F][0-9]*$”
直到结束-或使用拆分解决方案: