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]*$”
直到结束-或使用拆分解决方案: