Saya menggunakan Python ke kode program sederhana yang mengambil sampel file C ++ ".cpp" sebagai string dan kemudian menemukan semua string yang dinyatakan ke dalamnya. Kemudian saya ingin mengganti string itu menjadi hexcode yang setara seperti "h" sama dengan "\ x48".

मेरा कोड है

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)

अब जब मैं परिणाम मूल्य मुद्रित करता हूं तो यह "\ x22 \ x48 \ x22" के बजाय "एच" दिखाता है। मैं इसे अजगर 3.8 में जबरदस्ती कैसे कर सकता हूं?

Juga jika saya melakukannya seperti ini result = re.sub(regex,str2021, f1, 0) Ini memberi kesalahan raise s.error('bad escape %s' % this, len(this)) re.error: bad escape \x at position 0

मैं इसे पुनरावृत्त करना चाहता था ताकि सीपीपी फ़ाइल में रेगेक्स का उपयोग करके पाए जाने वाले प्रत्येक स्ट्रिंग पर कोड स्वचालित रूप से स्ट्रिंग को इसके समकक्ष यूनिकोड हेक्स कोड में परिवर्तित कर देगा

sample.cpp string a="abc"; string b="H";

इसे इस सीपीपी फ़ाइल को इस तरह बदलना चाहिए

string a="\x61\x62\x63"; string b="\x48";

Sarankan solusi

1
Abdul Hannan 12 सितंबर 2020, 09:42

1 उत्तर

सबसे बढ़िया उत्तर

Anda dapat menggunakan string mentah:

subst = r'\x22\x48\x22'

फिर, अपना re.sub कॉल भी बदलें:

re.sub(regex, re.escape(subst), f1, 0)

Python doc mengatakan, melarikan diri hanya backslash yang lebih baik, meskipun:

re.sub(regex, subst.replace("\\", r"\\"), f1, 0)
0
Wups 12 सितंबर 2020, 07:25