我目前正在使用Python 2.7解析大型文本文件,其中一些最初是用Unicode或UTF-8编码的。
对于包含直接与UTF-8中的字符串交互的函数的模块,我在文件的顶部包含# -*- coding: utf-8 -*-
,但对于仅使用ascii的函数,我没有打扰。
最终,这些模块会导致更大的模块,并且所有已解析的字符串会混合在一起。将# -*- coding: utf-8 -*-
包含在每个文件的顶部是一种好习惯吗?
这有什么好处?
答案 0 :(得分:8)
# -*- coding: utf-8 -*-
声明源文件仅的编码。它与Python处理输入或输出的方式无关。它只是意味着您可以使用UTF-8编写字符串文字和注释。
这是编码声明的效果。假设我有一个程序
# -*- coding: utf-8 -*-
# the following prints the Dutch word "één"
print(u"\xe9\xe9n")
这正是评论所说的。但是,如果我删除了coding
声明,它会崩溃:
File "a.py", line 1
SyntaxError: Non-ASCII character '\xc3' in file a.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
请注意,第1行是评论。可以通过删除评论来修复程序,只留下
print(u"\xe9\xe9n")
仍然与第一个程序完全相同。
答案 1 :(得分:1)
每个ASCII文件也是有效的UTF-8。不要担心将ASCII文件视为UTF-8文件,不需要转换,不增加大小。