2012-10-10 100 views
1

是否有一個用於python的綜合字符替換模塊,用於在字符串中查找所有非ascii或非Unicode字符並用ascii或unicode equivilents替換它們?在編碼或解碼過程中,這種「忽略」參數的這種安慰是瘋狂的,但同樣也是'?'在每個非翻譯角色的地方。用於非Unicode和非ASCII的Python中的綜合字符替換模塊

我正在尋找一個模塊,它會發現令人厭惡的字符,並使其符合任何標準要求。 我意識到,現存的字母和編碼的數量使得這有點不可能,但肯定有人對它進行了刺探?即使是一種基本的解決辦法也會比現狀好。

這意味着數據傳輸的簡化是巨大的。

回答

0

要查看任何單個字符,並猜測其編碼很難,可能不是很準確。但是,您可以使用chardet來嘗試檢測整個文件的編碼。然後,您可以使用字符串decode()和encode()方法將其編碼轉換爲UTF-8。

http://pypi.python.org/pypi/chardet

和UTF-8與ASCII向後兼容,這樣就不會成爲一個大問題。

+0

爲什麼看任何硬個性和猜測它的編碼? –

+0

@ x-y,因爲相同的代碼可以用於完全不同的語言。隨着更多的信息,它可能會更容易,但。 –

4

我不認爲你想要的是真的可能 - 但我認爲這是一個體面的選擇。

unicodedata有一個「正常化」的方法,可以適度降低文本你...

import unicodedata 
def gracefully_degrade_to_ascii(text): 
    return unicodedata.normalize('NFKD',text).encode('ascii','ignore') 

假設你正在使用的字符集已被映射成Unicode - 或者至少可以被映射成Unicode - 你應該能夠使用此模塊降解文本的Unicode版本到ASCII或UTF-8(標準庫中它的一部分也行)

全部文檔 - http://docs.python.org/library/unicodedata.html

+0

優秀的答案......謝謝 – Homer6

+0

正是我所期待的,thx喬納森 –