定义Python源代码编码的正确方法

定义Python源代码编码的正确方法

定义如何声明Python源代码编码。

通常,Python文件的前2行应该以下内容开头:

#!/usr/bin/python# -*- coding: <encoding name> -*-

但我看过很多文件,开头是:

#!/usr/bin/python# -*- encoding: <encoding name> -*-

=> 编码而不是编码.

那么,声明文件编码的正确方式是什么呢?

编码因为所用的正则表达式是懒惰的?或者它只是声明文件编码的另一种形式?

我问这个问题是因为PEP没有提到编码,它只是在谈论编码.


明月笑刀无情
浏览 729回答 3
3回答

慕妹3242003

检查文档这里:“如果Python脚本的第一行或第二行中的注释与正则表达式匹配coding[=:]\s*([-\w.]+),此注释作为编码声明处理““此表达式的推荐形式如下#&nbsp;-*-&nbsp;coding:&nbsp;<encoding-name>&nbsp;-*-也得到GNU Emacs的认可,以及#&nbsp;vim:fileencoding=<encoding-name>这是Bram Moolenaar‘s Vim所承认的。“因此,您可以在“编码”部分之前放置几乎任何内容,但是如果您希望100%的python-docs-推荐兼容,则可以坚持“编码”(没有前缀)。更具体地说,您需要使用Python识别的任何内容。以及您使用的特定编辑软件(如果它需要/接受任何事情)。例如coding表单被GNU Emacs(开箱即用)识别,但Vim不承认(是的,如果没有一个普遍的协议,它本质上是一个地盘战).

隔江千里

第263页:第一行或第二行必须匹配正则表达式“编码[:=]\s*([-\w.]+)”所以,“恩编码:utf-8“火柴。PEP提供了一些例子:#!/usr/bin/python#&nbsp;vim:&nbsp;set&nbsp;fileencoding=<encoding&nbsp;name>&nbsp;:&nbsp;#&nbsp;This&nbsp;Python&nbsp;file&nbsp;uses&nbsp;the&nbsp;following&nbsp;encoding:&nbsp;utf-8import&nbsp;os,&nbsp;sys

HUWWW

它本身提到了下面的正则表达式:要定义源代码编码,必须将一个神奇的注释作为文件中的第一行或第二行放在源文件中,例如:#&nbsp;coding=<encoding&nbsp;name>或(使用受欢迎编辑认可的格式):#!/usr/bin/python#&nbsp;-*-&nbsp;coding:&nbsp;<encoding&nbsp;name>&nbsp;-*-或:#!/usr/bin/python#&nbsp;vim:&nbsp;set&nbsp;fileencoding=<encoding&nbsp;name>&nbsp;:更准确地说,第一行或第二行必须匹配以下正则表达式:^[&nbsp;\t\f]*#.*?coding[:=][&nbsp;\t]*([-_.a-zA-Z0-9]+)因此,正如其他答案所总结的,它将匹配coding使用任何前缀,但如果您想尽可能地保持PEP兼容(即使据我所知,使用encoding而不是coding丝毫不违反PEP 263)-坚持“朴素”coding没有前缀。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python