繁体   English   中英

如何通过python从字符串中提取十六进制值?

[英]how to extract hex value from string by python?

下面是字符串寄存器地址 = [0x0128],数据 = [0x59]

我想通过使用正则表达式获得 0x59 而不是 0x0128

这是我的代码

import re
data = "Register addr = [0x0128], data = [0x59]"
pattern = re.compile("d[.]]")
re.findall(pattern, data)

我不知道得到确切的 0x59 你能帮我吗?

你可以做

data = "Register addr = [0x0128], data = [0x59]"
print(re.findall(r'(?<=data\s=\s)\[(\w*)\]',data))

输出

['0x59']

你也可以做print(re.search(r'(?<=data\\s=\\s)\\[(\\w*)\\]',data).group(1))

输出

请注意,re.search 仅返回第一个匹配项(在找到第一个匹配项后停止搜索。

0x59

如果您只想找到0x59只需直接搜索即可。

pattern = re.compile(r"0x59")

如果要查找位于[]所有以0x hex代码

pattern = re.compile(r"\[0x.*?\]")
re.findall(pattern, data)
#['[0x0128]', '[0x59]']

最简单的方法是通过:

print(re.sub(']', '', data.partition("data = [")[2]))

.partitiondata = [上拆分字符串,给出一个元组 & [2]选择data = [之后的字符串部分。

re.sub从该字符串中删除所有]

请注意,0x59 和 0x0128 都是有效的十六进制数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM