发布网友 发布时间:2022-04-22 00:15
共2个回答
热心网友 时间:2022-04-06 01:20
python的中文问题一直是困扰新手的头疼问题,Python的发行版至今尚未包括任何中文支持模块。当然,几乎可以确定的是,在将来的版本中,python会彻底解决此问题,不用我们这么麻烦了。 笔者使用的是2.5版本。Python的版本可以通过调用sys模块的sys.version查看。在几个月的学习中,主要遇到以下问题:
1. print打印中文的问题:
在编辑器中输入一段测试代码:
s=’测试’
print s
运行结果如下:
Non-ASCII character '\xb2' in file c:\Documents and Settings\Administrator\桌面\2.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details: 2.py, line 1, pos 0
原因是如果文件里有非ASCII字符,需要指定编码声明。把2.py文件的编码重新改为utf-8,并加上编码声明:
# -*- coding: utf-8 -*-
s=’测试’
print s
运行后可以正确打印中文。
2.中文路径的问题。
在D盘下保存一个名字为‘中文.txt‘的文件。运行如下测试代码:
# -*- coding: utf-8 -*-
f=open('D:\\中文.txt', 'r')
print f.read()
运行结果如下:
IOError: [Errno 2] No such file or directory: 'D:\\\xe4\xb8\xad\xe6\x96\x87.txt'
字符串有很多的编码,不同的系统和平台有各自的编码 ,为了实现系统或平台之间的信息交互可能需要编码转换。这里只需要先使用UNICODE编码一下,这样再读取中文路径就不会有问题了:
复制代码
# -*- coding: utf-8 -*-
path='D:\\中文.txt'
spath=unicode(path , "utf8")
f=open(spath,'r')
print f.read()
复制代码
然后就可以正确显示文件内容
总结:
所有的中文显示问题都可以归结为编码问题,遇到其他类似的问题,那只能仔细看文档,靠你的经验,靠你多做测试。而且根据python所报出来的错误一般也可以判断出来。那么当发现需要编码转换时,剩下的就是如何正确进行码制转换。
为了正确处理多语言文本,Python在2.0版后引入了Unicode字符串。从那时起,Python语言中的字符串就分为两种:一种是2.0版之前就已经使用很久的传统Python字符串,一种则是新的Unicode字符串。在Python语言中,一般的解决办法是使用unicode()内建函数对一个传统Python字符串进行“解码”,得到一个Unicode字符串,然后又通过Unicode字符串的encode()方法对这个Unicode字符串进行“编码”,将其“编码”成为传统Python字符串。
热心网友 时间:2022-04-06 02:38
随着学习的深入,用不了多久,你就可以写复杂的上千甚至上万行的代码啦,有些代码你花了很久写出来,过了些天再回去看,发现竟然看不懂了,哈哈,这太正常了。 另外,你以后在工作中会发现,一个项目多是由几个甚至几十个开发人员一起做,你要调用别人写的代码,别人也要用你的,如果代码不加注释,你自己都看不懂,更别说别人了,这样写会挨打的。所以为了避免这种尴尬的事情发生,一定要增加你代码的可读性。
代码注释分单行和多行注释, 单行注释用#,多行注释可以用三对双引号""" """
下面给大家看一段标准代码的注释,忽略代码意思
def subclass_exception(name, parents, mole, attached_to=None):
"""
Create exception subclass. Used by ModelBase below.
If 'attached_to' is supplied, the exception will be created in a way that
allows it to be pickled, assuming the returned exception class will be added
as an attribute to the 'attached_to' class.
"""
class_dict = {'__mole__': mole}
if attached_to is not None:
def __rece__(self):
# Exceptions are special - they've got state that isn't
# in self.__dict__. We assume it is all in self.args.
return (unpickle_inner_exception, (attached_to, name), self.args)
def __setstate__(self, args):
self.args = args
class_dict['__rece__'] = __rece__
class_dict['__setstate__'] = __setstate__
return type(name, parents, class_dict)
代码注释原则:
不用给全部代码加注释,只需要在自己觉得重要或不好理解的部分加注释即可
注释可以用中文或英文,但绝对不要拼音噢
注释不光要给自己看,还要给别人看,所以请认真写