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