簡體   English   中英

如何在Python中將%uXXXX代碼轉換為純文本?

[英]How to convert %uXXXX code to plain text in python?

我有像'%u0E1E%u0E1A%u0E40%u0E08%u0E2D%u0E02%u0E27%u0E14%u0E40'這樣的字符串,我想將其轉換為純文本'พบเจอ',我嘗試使用函數ord()和chr()作為follwos

chr(ord(u'\พ'))會給出chr(ord(u'\พ'))文本。

split_list = encoded_string.split('%')
for i in range(1,len(split_list)):
    split_list[i]= '\\'+split_list[i]
split_list
['', '\\u0E1E', '\\u0E1A', '\\u0E40', '\\u0E08', '\\u0E2D', '\\u0E02', '\\u0E27', '\\u0E14',.....]

現在,當我使用以下循環將其轉換為純文本時

for i in range(1,len(split_list)):
    split_list[i] = chr(ord(u''+split_list[i]))

出現以下錯誤

TypeError                                 Traceback (most recent call last)
<ipython-input-104-5ab6fb196276> in <module>
      1 for i in range(1,len(split_list)):
----> 2     split_list[i] = chr(ord(u''+split_list[i]))

TypeError: ord() expected a character, but string of length 6 found

請幫助我提前解決此問題。

看來您有一個字符串,其中通常用於表示非ASCII字符的反斜杠表示已由基於百分號的約定代替。

解決方案是用反斜杠替換前兆符號(如您所試),然后編碼為字節並從unicode-escape編解碼器解碼。 結果將是Python str

>>> s = '%u0E1E%u0E1A%u0E40%u0E08%u0E2D%u0E02%u0E27%u0E14%u0E40'
>>> # Encode to latin-1 as it won't lose any information.
>>> result = s.replace('%', '\\').encode('latin-1').decode('unicode-escape')
>>> result
'พบเจอขวดเ'
>>> # Result is longer than we expected
>>> expected = 'พบเจอ' 
>>> result == expected
False
>>> expected in result
True
>>> result.startswith(expected)
True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM