我有一個文本文件充滿Unicode字符作爲"\ud83d\udca5"
但python似乎並不喜歡他們。
但是,如果我將其替換爲u'\U0001f4a5'
這似乎是他的蟒蛇逃生風格(Charbase),它的工作原理。如何將「 uxxxx uxxxx」轉換爲u' Uxxxxxxxx'?
是否有解決方案將它們全部轉換爲u"\Uxxxxxxxx"
轉義格式比python可以理解?
謝謝。
我有一個文本文件充滿Unicode字符作爲"\ud83d\udca5"
但python似乎並不喜歡他們。
但是,如果我將其替換爲u'\U0001f4a5'
這似乎是他的蟒蛇逃生風格(Charbase),它的工作原理。如何將「 uxxxx uxxxx」轉換爲u' Uxxxxxxxx'?
是否有解決方案將它們全部轉換爲u"\Uxxxxxxxx"
轉義格式比python可以理解?
謝謝。
你在混合使用Unicode和編碼的字符串。 u'\U0001f4a5'
是一個Unicode對象,用於處理字符串的Python內部數據類型。 (在Python 3中,u
是可選的,因爲現在所有的字符串都是Unicode對象)。
另一方面,文件使用編碼。 UTF-8是最常見的一種,但它只是將一個Unicode對象存儲在面向字節的文件或流中的一種方式。打開這樣的文件時,您需要指定編碼,以便Python可以將字節轉換爲有意義的Unicode對象。
就你而言,你似乎需要使用UTF-16
編解碼器而不是UTF-8
來打開文件。
with open("myfile.txt", encoding="utf-16") as f:
s = f.read()
會給你適當的內容,如果編解碼器實際上是UTF-16
。如果看起來不正確,請嘗試使用"utf-16-le"
或"utf-16-be"
。
嗯,我試過,但是當我用'''utf-16'''打開文件時,我有: '''UnicodeDecodeError:'utf-16-le'編解碼器無法解碼9526- 9527:非法的UTF-16代理'''。 與'''utf-16-be'''一樣,我可以用'''utf-8'''打開它,但是遇到\ uxxxx \ uxxxx問題。 – DasFranck
然後它完全使用不同的編碼。不幸的是,沒有辦法可靠地確定編碼 - 你需要檢查文件的來源。你能發佈一個相關的文件樣本嗎? –
這是因爲這是UTF-16,而不是UTF-8。 – Joey
@Joey:這不是(整個)點。 Unicode對象和編碼的字節序列(由UTF-16,UTF-8或任何其他編碼)之間存在根本區別。 –
是的,我想是的,但我有一個UTF-8文件的UTF-16字符。 這就是問題所在。 – DasFranck