gpt4 book ai didi

python - 在字符串中的十六进制数字前附加 '0x'

转载 作者:太空宇宙 更新时间:2023-11-03 15:20:05 27 4
gpt4 key购买 nike

我正在解析一个 xml 文件,我在其中获取基本表达式(如 id*10+2)。我想做的是评估表达式以实际获取值。为此,我使用了非常有效的 eval() 方法。

唯一的问题是数字实际上是十六进制数。如果每个十六进制数字都以“0x”为前缀,则 eval() 方法可以很好地工作,但我找不到方法,也找不到类似的问题。如何以干净的方式完成?

最佳答案

使用 re模块。

>>> import re
>>> re.sub(r'([\dA-F]+)', r'0x\1', 'id*A+2')
'id*0xA+0x2'
>>> eval(re.sub(r'([\dA-F]+)', r'0x\1', 'CAFE+BABE'))
99772

请注意,如果对 eval 的输入无效,它将无法工作。还有many risks使用 eval

如果您的十六进制数字有小写字母,那么您可以使用:

>>> re.sub(r'(?<!i)([\da-fA-F]+)', r'0x\1', 'id*a+b')
'id*0xa+0xb'

这使用否定后向断言来确保字母 i 不在它试图转换的部分之前(防止 'id' 变成 'i0xd'。如果变量是 Id,则将 i 替换为 I

关于python - 在字符串中的十六进制数字前附加 '0x',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16354980/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com