新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容介绍了“Python中文问题举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
我们提供的服务有:成都网站设计、网站建设、微信公众号开发、网站优化、网站认证、葫芦岛ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的葫芦岛网站制作公司
在这之前,我们先要了解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, inprint 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中文问题举例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!