在Python中用字节替换字符串中的'0xNN

-1 投票
2 回答
1363 浏览
提问于 2025-04-18 17:16

我有一个字符串,比如说

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'

斜杠/和反斜杠\是完全不同的东西。

撰写回答