Python re.sub() 不是替换字符串

Python re.sub() is not substituting a string

大家好,这里需要您的帮助。

这是我的示例代码

import random
import string
import re
str=r'im a boy \x%02X'
result = re.sub('\\x%02X', re.escape('\x5c\x5c\x78\x25\x30\x32\x58'), str, 0)
print(" Code=\n", result)

所以当我从这个程序中获取输出时。输出是: 代码= 我是男孩\\x%02X

但应该是这样的/

代码= 我是男孩 \x5c\x5c\x78\x25\x30\x32\x58

为什么不替换?

你的代码中有很多错误,这让我想知道 r'im a boy \x%02X' 是否真的是你输入的正确表示。

假设是:

import re

s = r'im a boy \x%02X'
result = re.sub(r'\\x%02X', re.escape(r'\x5c\x5c\x78\x25\x30\x32\x58'), s)
print(result)

您的代码存在的一些问题:

  • 为什么 random 在那里?还有 string?
  • 不要命名变量,这样它们就可以隐藏基本类型(或任何内置类型),str 是一个错误的名称
  • 如果没有 r\x5c[etc] 字符串将变成与之前完全相同的字符串,定义为字节。
  • 为什么使用完全相同文本的字节表示作为文本的替换?
  • 为什么告诉 re.sub 只替换 0 次?

顺便说一下,从您在这里尝试的情况来看,我想知道您是否意识到您正在打印的内容和变量的实际值是什么并不完全相同。您打印的是值的文本表示,而不是实际值。

你最好解释一下你为什么要尝试这个替换,因为这可能是一个典型的 XY 问题。