2012-01-26 68 views
0

我正在创建一个字典,它需要用空格分隔字符串的每个字母。我正在使用连接。问题是当字符串包含非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' 
+0

如果这是Python 2.x,则需要将其定义为Unicode字符串文字。 – kindall

+0

在我的机器上,'''.join()'完美地与Python 3.x一起工作。你能指定你使用的是哪种操作系统/版本的Python吗? – Makoto

+0

正在使用2.7。刚刚安装了3.2和''.join()可以正常工作!谢谢。 – pmiln099

回答

3

你应该使用Unicode字符串,即

word = u'məsjø' 

而且不要忘了与

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

(设置你的Python源文件的编码在一开始甚至不考虑使用的东西除了UTF-8之外。 ;))

更新:这只适用于Python < 3.如果您使用Python> = 3,您可能不会遇到这些问题。因此,如果升级到3.x是一种选择,那么这是一种可行的方式 - 不幸的是,在某些情况下,由于库依赖性等原因,可能不会。

正如评论中所提到的,编码问题也可能是由不同配置的终端产生的,尽管这在这里不是问题。

+0

或者如果从其他地方读取该单词,请使用'word.decode('utf-8')'将其变为unicode。 –

+0

在Python 3中,此限制已被删除。此外,它没有明确回答这个问题。 – Makoto

+0

我假设OP不使用Python 3,因为那样这个错误就不太可能......但是你说得对,很高兴知道。 –