在Python中用字节替换字符串中的'0xNN
我有一个字符串,比如说
string1 = '0x000x200x300x00'
我想要的结果是这样的
result = '\x00\x20...'
我想把每个 '0x' 替换成 '\x'。该怎么做呢?我试过在Python里用替换函数,代码如下
y = x.replace('0x', '\x')
y = x.replace('0x', '\\x')
y = x.replace('0x', r'\x')
但是没有成功 :( 。有没有人能帮我解决这个问题?
2 个回答
0
你到底想要实现什么呢?
我有点犹豫要不要发这个回答,因为它并没有直接回答你的问题,但我猜测你可能想做一些字节处理(纯属猜测),因为你在问题中没有说得很清楚。
如果是这样的话,这里有另一个你可能想做的“事情”:
data = [int(_, 16) for _ in string1.split('0x')[1:]]
这段代码会给你一个int
类型的列表,表示“字节”(?)值(当然,这要看你想做什么...)
上面的代码是基于你提供的示例输入做了一些假设:
- 输入字符串会以
0x
开头 - 输入字符串不包含任何未转义的值。换句话说,你的字符串中总是会有一串
0xnn
格式的字符串,中间没有其他东西!
2
string1.replace("0x","\\x") use `\\` to escape the `\`
string1 = '0x000x200x300x00'
print string1.replace("0x","\\x")
\x00\x20\x30\x00
In [19]: string1 = '0x000x200x300x00'
In [20]: print string1.replace("0x","\\x") # str
\x00\x20\x30\x00
In [21]: string1.replace("0x","\\x") # repr
Out[21]: '\\x00\\x20\\x30\\x00'
斜杠/
和反斜杠\
是完全不同的东西。