python 2.7 分割中文字符串时中文乱码的问题,

本文详细解析了Python2.7处理中文字符串时出现乱码的原因,并提供了解决方案。通过将字符串转换为Unicode编码,可以避免乱码问题,确保中文字符串正确分割。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 2.7 处理中文字符串时,经常会碰到乱码问题。最近在用python 2.7分割中文字符串,分割后的结果都是乱码。苦恼很久,终于找到原因。先看代码:

import os
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

str="我是小天才"
print(type(str))
strarr=[]
for i in str:
    print[i]
    strarr.append(i)
print("======================================")
print(strarr)

结果如下:

<type 'str'>
['\xe6']
['\x88']
['\x91']
['\xe6']
['\x98']
['\xaf']
['\xe5']
['\xb0']
['\x8f']
['\xe5']
['\xa4']
['\xa9']
['\xe6']
['\x89']
['\x8d']
======================================
['\xe6', '\x88', '\x91', '\xe6', '\x98', '\xaf', '\xe5', '\xb0', '\x8f', '\xe5', '\xa4', '\xa9', '\xe6', '\x89', '\x8d']

之所以会这样是因为在utf8编码形式为二进制,一个字由3个编码构成,python分割额时候,是按这个编码分割的。为了理解这个,请看下面代码:

print(str[:3])
==>我

这里可以看出,当按照编码规则,一次取3个编码的时候,打印中文就正常了。
但我们写代码的时候,如果碰到要分割中文字符串的时候,就每3个分割,这样显然反人类。

解决办法,将中文转unicode,在分割:

str="我是小天才"
str=unicode(str)
print(type(str))
print(str[:3])
strarr=[]
for i in str:
    print [i]
    strarr.append(i)
print("======================================")
print(strarr)

print(strarr[0])

结果如下:

<type 'unicode'>
我是小
[u'\u6211']
[u'\u662f']
[u'\u5c0f']
[u'\u5929']
[u'\u624d']
======================================
[u'\u6211', u'\u662f', u'\u5c0f', u'\u5929', u'\u624d']
我

我们可以看到,在unicode编码的情况下,每个中文对应一个编码,在按照编码分割的时候,分割出的结果就不会有错了。我们再进行打印,就可以显示中文了(前提:头部设置# -- coding: utf-8 --)。

总结:

在分割中文字符转时:先将str转unicode,再进行分割。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值