python-3.x - 将带有“\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
我不确定为什么这个字符串的格式不正确,但我想从这个字符串中获得尽可能多的精度并继续前进。
解决方案
不幸的是,模块\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
推荐阅读
- sql - 将平面 JSON 结构转换为表格
- android - 如何通过 HTTP(S) 向 Android 应用程序发送数据
- amazon-web-services - 如何模拟 API Gateway RestAPI 端点并根据请求在响应中返回自定义变量?
- php - Mac CLI PHP ini 文件位置
- amazon-web-services - 来自 AWS SQS 的选择性读取消息
- swift - 使用四元数的 SceneKit 旋转
- python - Kivy-如何使用python操作kivy中的输入?
- python - python spacy循环解析引理并在令牌上添加特殊情况
- ruby-on-rails - Rails 时区设置不正确
- python - 使用 plotly 在 Networkx 跟踪中添加边缘着色的选项