我有一个表,其中有一列包含字符串数据。在每一行中,您需要将部分行从十进制转换为十六进制。
- 列中有行。
SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.50.108 = 整数:0
SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.50.158 = 整数:0
SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.75.51.118 = 整数:0
- 在这些行中,您需要为每行进行选择,从数字 72 开始,例如 72.87.84.67.166.75.50.108。
- 经过点 72 等的每个数字都需要使用 hex() 从十进制值转换为十六进制值,72 是 48,87 是 57,这将得到 48.57.54.43.a6.ac.d4 .e8
如果你在没有 pandas 的情况下执行此操作,结果如下:
import re
re_str = r'72.\d*.\d*.\d*\d*.\d*.\d*.\d*.\d*'
first_str = 'SNMPv2-SMI::enterprises.35265.1.22.3.1.1.14.1.8.72.87.84.67.166.172.212.232 = INTEGER: 0'
all_re_list = re.findall(re_str, first_str)
re_list_to_str = " ".join(all_re_list)
re_str_to_list2 = re_list_to_str.split('.')
re_str_to_list_int = []
for i in re_str_to_list2:
i = int(i)
re_str_to_list_int.append(i)
re_str_to_list_hex = []
for i in re_str_to_list_int:
a = hex(int(i))[2:]
re_str_to_list_hex.append(a)
print('re_str_to_list_hex', re_str_to_list_hex[:])
结果是:re_str_to_list_hex ['48', '57', '54', '43', 'a6', 'ac', 'd4', 'e8']
如何使用 Pandas 完成这一切?因为有很多表格形式的数据。
str.replace()这里你可以通过函数使用带有替换的方法。首先,我们剪切“.72”之前的行并将它们放置在两列的中间框架中。我们str.replace()通过将点后出现的所有数字替换为其十六进制表示来处理第二列。然后我们粘合线条的两个部分。结果:
如果需要将转换后的数字提取到列表中,可以这样做: