日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

关于Python的编码注释# -*- coding:utf-8 -*- 详解

發布時間:2025/4/5 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Python的编码注释# -*- coding:utf-8 -*- 详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.普通解釋:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果要在python2的py文件里面寫中文,則必須要添加一行聲明文件編碼的注釋,否則python2會默認使用ASCII編碼。

二.官方解釋:

1. python2.1中遇到的問題:

Python 2.1 中,想要輸入 Unicode 字符,只能用基于 Latin-1 的 "unicode-escape" 的方式輸入 -> 對于其他非 Latin-1 的國家和用戶,想要輸入 Unicode 字符,就顯得很繁瑣,不方便。

希望是:編程人員,根據自己的喜好和需要,以任意編碼方式輸入字符串,都可以,這樣才正常。

2. 建議選用的方案

所以,才有人給 Python 官方建議,所以才有此PEP 0263。

此建議就是:

允許在 Python 文件中,通過文件開始處的,放在注釋中的,字符串形式的,聲明,聲明自己的 python 文件,用何種編碼。

由此,需要很多地方做相應的改動,尤其是 Python 文件的解析器,可以識別此種文件編碼聲明。

3 具體如何聲明python文件編碼?

(1)如果沒有此文件編碼類型的聲明,則 python 默認以ASCII編碼去處理;如果你沒聲明編碼,但是文件中又包含非ASCII編碼的字符的話,python解析器去解析的 python 文件,自然就會報錯了。

(2)必須放在python文件的第一行或第二行;

(3)支持的格式,可以有三種:

  • 帶等于號的:# coding=<encoding name>
  • 最常見的,帶冒號的(大多數編輯器都可以正確識別的):#!/usr/bin/python # -*- coding: <encoding name> -*-
  • vim的:#!/usr/bin/python

    # vim: set fileencoding=<encoding name> :

  • (4)更加精確的解釋是:

    ? ? 符合正則表達式:"^[ \t\v]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)" 就可以;

    關于正則表達式的理解:

    1."^"表示開始;

    2."[ \t\v]"表示匹配制表符\t和垂直制表符\v,*表示匹配0次或者多次,則[ \t\v]*合起來理解就是匹配0次或者多次\t\v;

    3."#"匹配#字符,即對應標題的#字符;

    4.".*"表示接下來匹配任意字符,".*?"表示以非貪心算法匹配任意字符,對應標題中的“?-*-?”;

    5."coding"對應標題中的coding;

    6."[:=]"表示接下來的字符是":"或者"="出現的任意多個字符,對應標題中的":";

    7.[ \t]*表示接下來匹配0次或者多次\t;標題中表示使用了0次;

    8.[-_.a-zA-Z0-9]表示匹配出現'_'字符、小寫字母'a至z'、大小字母'A至Z'、數字‘0至9’的任意多的字符,對應標題中的utf-8

    9.接下來標題中的"?-*-?"則這個官方表達式沒有給出解釋,因此這個正則表達式應該是不完整的,我覺得完整的正則表達式可以為:

    "^[ \t\v]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+).*$"

    總結

    以上是生活随笔為你收集整理的关于Python的编码注释# -*- coding:utf-8 -*- 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。