a = '\xe6\xb8\xac\xe8\xa9\xa6'
print(bytes(a, 'latin-1').decode('utf-8'))

a = input("input:")
print(bytes(a, 'latin-1').decode('utf-8'))

Yang pertama bisa mencetak hasilnya dengan benar
Sementara yang kedua hanya akan mencetak string yang saya masukkan

keluaran:

測試
input:\xe6\xb8\xac\xe8\xa9\xa6
\xe6\xb8\xac\xe8\xa9\xa6

Process finished with exit code 0

0
ajiou 4 Januari 2022, 17:59
Apa pertanyaan Anda? Perhatikan bahwa urutan escape hanya ditafsirkan untuk string literal, yaitu yang ada di kode sumber, bukan string yang dibaca dari input, file, atau yang serupa. (Itu sebenarnya persis apa yang sudah ditunjukkan oleh kode Anda, hanya ingin menunjukkannya jika itu tidak jelas bagi Anda.)
 – 
MisterMiyagi
4 Januari 2022, 18:06
Bagaimana cara mengurai string dari input dengan cara yang sama seperti yang pertama?
 – 
ajiou
4 Januari 2022, 18:21

2 jawaban

Jawaban Terbaik

Transformasinya agak rumit:

# Use r'', simulate input
a = r'\xe6\xb8\xac\xe8\xa9\xa6'

print(a.encode('ascii').decode('unicode-escape').encode('latin-1').decode('utf-8'))

Ikuti transformasinya:

# Step 0 (initial)
print(a)
\xe6\xb8\xac\xe8\xa9\xa6

# Step 1
print(a.encode('ascii'))
b'\\xe6\\xb8\\xac\\xe8\\xa9\\xa6'

# Step 2
print(a.encode('ascii').decode('unicode-escape'))
測試

# Step 3
print(a.encode('ascii').decode('unicode-escape').encode('latin-1'))
b'\xe6\xb8\xac\xe8\xa9\xa6'

# Step 4 (final)
print(a.encode('ascii').decode('unicode-escape').encode('latin-1').decode('utf-8'))
測試
0
Corralien 4 Januari 2022, 18:15
Terima kasih, itu berhasil
 – 
ajiou
4 Januari 2022, 18:23

Atau, gunakan metode yang lebih sederhana ini (setidaknya jika Anda tidak khawatir tentang risiko keamanan):

unicode_input = eval('"' + input() + '"')

Perlu diingat: menggunakan eval memiliki risiko keamanan yang tinggi

Atau seperti yang disarankan oleh @MisterMiyagi:

import ast
unicode_input = ast.literal_eval('"' + input() + '"')
0
Sujal Singh 4 Januari 2022, 18:37
ast.literal_eval berfungsi dengan baik di sini, tanpa masalah keamanan.
 – 
MisterMiyagi
4 Januari 2022, 18:34
Tidak tahu tentang itu, senang tahu. memperbarui jawaban saya untuk memasukkan ini
 – 
Sujal Singh
4 Januari 2022, 18:38