为什么Python3.8会像“\x48“;作为「;H";。我想把它写成“我想把它写成”\x48“;一串 我使用Python来编写一个简单的程序,它将样本C++ ++ .CPP文件作为字符串,然后找到声明到它的所有字符串。然后我想将该字符串替换为其等效的十六进制代码,如“H”等于“\x48”
我的代码是为什么Python3.8会像“\x48“;作为「;H";。我想把它写成“我想把它写成”\x48“;一串 我使用Python来编写一个简单的程序,它将样本C++ ++ .CPP文件作为字符串,然后找到声明到它的所有字符串。然后我想将该字符串替换为其等效的十六进制代码,如“H”等于“\x48”,python,string,python-unicode,unicode-escapes,Python,String,Python Unicode,Unicode Escapes,我的代码是 f = open("sample.cpp", "r") f1 = f.read() regex = r"\"(?:(?:(?!(?<!\\)\").)*)\"" ii=0 for str2021 in find: print("Output Of Encode=") str2021="".join(r'\x{0:x}'.format(o
f = open("sample.cpp", "r")
f1 = f.read()
regex = r"\"(?:(?:(?!(?<!\\)\").)*)\""
ii=0
for str2021 in find:
print("Output Of Encode=")
str2021="".join(r'\x{0:x}'.format(ord(c)) for c in find[ii])
print (str2021)
ii=ii+1
subst='\x22\x48\x22'
result = re.sub(regex,subst, f1, 0)
if result:
print("substituted op=")
print (result)
f=open(“sample.cpp”、“r”)
f1=f.read()
regex=r“\”(?:(?:(?!(?您可以使用原始字符串:
subst = r'\x22\x48\x22'
然后,也更改您的re.sub呼叫:
re.sub(regex, re.escape(subst), f1, 0)
Python doc说,只避开反斜杠更好,不过:
re.sub(regex, subst.replace("\\", r"\\"), f1, 0)
您可以使用原始字符串:
subst = r'\x22\x48\x22'
然后,也更改您的re.sub呼叫:
re.sub(regex, re.escape(subst), f1, 0)
Python doc说,只避开反斜杠更好,不过:
re.sub(regex, subst.replace("\\", r"\\"), f1, 0)
错误似乎出现在这一行subst='\x22\x48\x22'
上,它显然应该是一个原始字符串,正如您在字符串中使用的所有其他位置所做的那样。错误似乎出现在这一行subst='\x22\x48\x22'
上,它显然应该是一个原始字符串,就像您在其他所有位置所做的那样“我在字符串中使用了\x
。我在使用您的方法后出现此错误。回溯(最近一次调用):文件“C:\Users\Angel x\AppData\Local\Programs\Python\Python38\lib\sre\u parse.py”,第1039行,在parse\u模板this=chr中(转义[this][1])KeyError:'\\X实际上,当这个subst字符串被传递到这个函数result=re.sub(regex,subst,f1,0)时,就会抛出关于转义字符的错误。@AbdulHannan在我的答案中添加了re.sub调用。我是在使用你的方法后得到这个错误的。回溯(最近一次调用):File“C:\Users\Angel X\AppData\Local\Programs\Python\Python38\lib\sre_parse.py”,第1039行,在parse_模板this=chr(ESCAPES[this][1])keyrerror:'\\X实际上,当这个子字符串被传递到这个函数result=re.sub(regex,subst,f1,0)中时,就会抛出关于转义字符的错误。@AbdulHannan在我的答案中添加了re.sub调用。