本篇内容介绍了“Python中文问题举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
在这之前,我们先要了解Python中有两种字符串,分别是一般的字符串(每个字符用8 bits表示)和Unicode字符串(每个字符用一个或者多个字节表示)。
它们可以相互转换,有着更为全面的描述,在此我就不再多说什么了。来看下面的代码:
# -*- coding:gb2312 -*- #必须在***行或者第二行 print "-------------code 1----------------" a = "中文a我爱你" print a print a.find("我") b = a.replace("爱", "喜欢") print b print "--------------code 2----------------" x = "中文a我爱你" y = unicode(x, "gb2312") print y.encode("gb2312") print y.find(u"我") z = y.replace(u"爱", u"喜欢") print z.encode("gb2312") print "---------------code 3----------------" print y
说是遇到非ASCII字符了,并让我们参考pep-0263。PEP-0263(Python Enhancement Proposal)上面说得很清楚了,Python也意识到了国际化问题,并提出了解决方案。根据提案上面的要求,我们有如下代码:
-------------code 1---------------- 中文a我爱你 5 中文a我喜欢你 --------------code 2---------------- 中文a我爱你 3 中文a我喜欢你 ---------------code 3---------------- Traceback (most recent call last): File "G:/Downloads/eclipse/workspace/p/src/hello.py", line 16, in <module> print y UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
我们可以看到,通过引入Python中文问题声明,我们可以正常地在使用中文了,而且在code 1和2中,控制台也能正确的把中文打印出来。但是,很明显,上面的代码也反映出了不少的问题:
1、code 1 和 2在使用print时采用了不同的方式,1是直接print,而2在print之前先进行编码
2、code 1 和 2中在同样的字符串查找同一个字符“我”,得出的结果不一样(分别是5和3)
3、code 3 中直接打印unicode字符串 y时出现错误(这也是为什么code 2中要先进行编码的原因)
“Python中文问题举例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/230979.html