python中文字符串处理问题

python中文字符串处理问题

我在一个python程序中要从一个中英文混合的文件中查找有没有用户输入的一个字符串。文件用Unicode存,程序中用Unicode字符串做,在Linux下使用没有问题(配置合适的话小企鹅和cce都可以输入UTF8汉字),但在Windows(中文版及英文版)下测试,输入法输入的都是GB编码汉字,无法与Unicode字符串进行匹配操作。

如果我把原文件也用GB存,又会出现两个半字符结合错误匹配的问题,比如原文中有“人民”,没有“嗣”,因为“人民”GB是“\xc8\xcb\xc3\xf1”,“嗣”GB是“\xcb\xc3”,搜索“嗣”就会认为找到了。这样也不妥。

微软的东西这方面做得比较智能,.NET下默认也是Unicode编码,但输入或复制粘贴GB编码的文字过去都能正确处理。

那么如何在python下解决这个问题呢?谢谢。
要根据你处理的编码对文件也作相应的编码转换即可。比如你的程序打算使用unicode来处理,而文件是gb编码的,那么在打开时或者使用codec的open函数,在打开时进行编码转换,或先读出来,然后进行unicode转换即可。
In [73]: b = "it's 中文"

In [74]: b
Out[74]: "it's \xe4\xb8\xad\xe6\x96\x87"

In [75]: b.decode('utf-8')
Out[75]: u"it's \u4e2d\u6587"

In [76]: b.decode('utf-8').encode('gb18030')
Out[76]: "it's \xd6\xd0\xce\xc4"
>>> b = '''it's 中文'''
>>> b
"it's \326\320\316\304"
>>> b.decode('utf-8')
Traceback (innermost last):
  File "<stdin>", line 1, in ?
AttributeError: 'string' object has no attribute 'decode'
>>>
2.3版好象str类型没有decode方法,而只有unicode类型有。2.4好象都有了。

你的是什么版本?
str 的 decode确实要2.4才能用。  除非你  from __future__ import str (‘str'拼写不一定正确)

哈哈,,看着怀里的蟒蛇一天天强健起来,真高兴啊。 马上出来的2.5版里又有了不少好东西, 大家2.4里的特性都掌握了吗?

我前几天用
decode('gb18030').encode('utf-8')  这种方法
写了一个 转化mp3文件里中文tag内容为utf-8的 小程序。  有兴趣可以去看看
http://www.linuxfans.org/nuke/mo ... eninfo&did=4415