我正在創建一個字典,它需要用空格分隔字符串的每個字母。我正在使用連接。問題是當字符串包含非ascii字符時。加入將它們分成兩個字符,結果是垃圾。在python中的非ascii字符之間插入空格
例子:
>>> word = 'məsjø'
>>> ' '.join(word)
給我:
'm \xc9 \x99 s j \xc3 \xb8'
當我要的是:
'm ə s j ø'
甚至:
'm \xc9\x99 s j \xc3\xb8'
我正在創建一個字典,它需要用空格分隔字符串的每個字母。我正在使用連接。問題是當字符串包含非ascii字符時。加入將它們分成兩個字符,結果是垃圾。在python中的非ascii字符之間插入空格
例子:
>>> word = 'məsjø'
>>> ' '.join(word)
給我:
'm \xc9 \x99 s j \xc3 \xb8'
當我要的是:
'm ə s j ø'
甚至:
'm \xc9\x99 s j \xc3\xb8'
你應該使用Unicode字符串,即
word = u'məsjø'
而且不要忘了與
# -*- coding: UTF-8 -*-
(設置你的Python源文件的編碼在一開始甚至不考慮使用的東西除了UTF-8之外。 ;))
更新:這隻適用於Python < 3.如果您使用Python> = 3,您可能不會遇到這些問題。因此,如果升級到3.x是一種選擇,那麼這是一種可行的方式 - 不幸的是,在某些情況下,由於庫依賴性等原因,可能不會。
正如評論中所提到的,編碼問題也可能是由不同配置的終端產生的,儘管這在這裏不是問題。
或者如果從其他地方讀取該單詞,請使用'word.decode('utf-8')'將其變爲unicode。 –
在Python 3中,此限制已被刪除。此外,它沒有明確回答這個問題。 – Makoto
我假設OP不使用Python 3,因爲那樣這個錯誤就不太可能......但是你說得對,很高興知道。 –
如果這是Python 2.x,則需要將其定義爲Unicode字符串文字。 – kindall
在我的機器上,'''.join()'完美地與Python 3.x一起工作。你能指定你使用的是哪種操作系統/版本的Python嗎? – Makoto
正在使用2.7。剛剛安裝了3.2和''.join()可以正常工作!謝謝。 – pmiln099