我有一个如下的数据帧:
type value
hex "6d,79,20,6e,61,6d,65,20,69,73,20,6a,6f,68,6e,0a"
name john
dynamic 12
action encroach
hex_2 "4d,69,6e,65,20,69,73,20,73,61,75,6c,2c,20,6e,69,63,65,20,74,6f,20,6d,65,65,74,20,79,6f,75,2e,20"
hex "4d,79,20,6e,61,6d,65,20,69,73,20,4d,61,74,74"
name Matt
dynamic 91
action penalty
hex_2 "49,20,61,6d,20,61,6e,20,65,6e,63,6f,64,65,64,20,6d,65,73,73,61,67,65,20,74,68,61,74,20,49,20,68,61,76,65,20,74,6f,20,6b,65,65,70,20,69,6e,74,65,72,6e,61,6c,20,74,6f,20,6d,79,20,6f,72,67,61,6e,69,7a,61,74,69,6f,6e,2e,20"
如何有条件地将十六进制和十六进制\u 2重新格式化为ascii?你知道吗
使用函数调用将十六进制转换为ascii的当前代码如下:
def ascii_convert(char):
value = int(char, 16)
if 32 <= value < 128:
return chr(value)
else:
return char
Current Failed attempt at converting:
print(df[df['type'].str.contains('hex|hex_2').apply(lambda x: ascii_convert(x)))
预期产量:
type value
hex my name is john # converted
name john # Untouched
dynamic 12 # Untouched
action encroach # Untouched
hex_2 Mine is saul, nice to meet you. # converted
hex My name is Matt # converted
name Matt # Untouched
dynamic 91 # Untouched
action penalty # Untouched
hex_2 I am an encoded message that I have to keep internal to my organization. # converted
我知道转换函数适用于字符,但在我的特定条件下使用该函数时遇到了问题。我的数据类型标签可以有5或6个不同的标签,我想从十六进制转换为ascii,如十六进制和十六进制2。你知道吗
任何帮助都是惊人的。谢谢您。你知道吗
尝试失败,因为使用
str.contains('hex|hex_2')
时,您正在尝试匹配确切的字符串“hex | hex | u2”。但不存在具有该名称的列。你知道吗相反,由于您确认要转换的所有列的名称中都有字符串“hex”,因此应该这样做。你知道吗
这将选择在
type
列中具有“hex”的行的值并对其进行转换,其他列保持不变这里有一个例子:
应用函数并更新标签列:
有一些错误处理和数据问题。如果我的所有文件不包含正确的数据要求,这将有助于删除空字节和错误处理。你知道吗
相关问题 更多 >
编程相关推荐