2012-01-26 40 views
0

空白で区切られた文字列の各文字を必要とする辞書を作成しています。私は結合を使用しています。問題は、文字列に非ASCII文字が含まれている場合です。 Joinはそれらを2つの文字に分割し、結果はガベージです。Pythonの非アスキー文字間に空白を挿入

例:

>>> word = 'məsjø' 
>>> ' '.join(word) 

は私を与える:

'm \xc9 \x99 s j \xc3 \xb8' 

私がしたいことは次のとおりです。でも

'm ə s j ø' 

または:

'm \xc9\x99 s j \xc3\xb8' 
+0

これがPython 2.xの場合は、Unicode文字列リテラルとして定義する必要があります。 – kindall

+0

私のマシンでは、 '' '.join() 'はPython 3.xと完璧に動作します。使用しているPythonのOS /バージョンを指定できますか? – Makoto

+0

2.7を使用していました。 3.2と '' .join()は問題なく動作します!どうも。 – pmiln099

答えて

3

あなたはすなわち

word = u'məsjø' 

そして

# -*- coding: UTF-8 -*- 

で最初にあなたのPythonソースファイルのエンコーディングを設定することを忘れないでください(でも何かを使用することについて考えてはいけない、Unicode文字列を使用する必要がありますUTF-8以外。 ;))

を更新:これは、あなたは、Python> = 3を使用している場合、あなたはおそらく最初の場所でこれらの問題に実行しなかったであろうPythonの< 3に適用されます。したがって、3.xへのアップグレードがオプションであれば、それはやり方です - 残念なことに、ライブラリの依存関係などのために、場合によってはそうでないかもしれません。

コメントに記載されているように、エンコードの問題は、異なる端末を設定した場合でも発生する可能性がありますが、ここでは問題はありません。

+0

単語が他の場所から読み込まれた場合は、word.decode( 'utf-8') 'を使用してUnicodeに変換します。 –

+0

Python 3では、この制限は削除されています。また、それは明らかに質問に答えるものでもありません。 – Makoto

+0

私はOPがPython 3を使用しないと仮定していました。なぜなら、このエラーは起こりそうもないからです...しかし、あなたは正しいです、確かに知ってうれしいです。 –

関連する問題