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

歡迎訪問 生活随笔!

生活随笔

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

python

Python中必知的知识点:文本转义及编码的常用方法

發布時間:2025/3/20 python 10 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中必知的知识点:文本转义及编码的常用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每種語言都有其關鍵字和保留字符,這樣為了能這些特殊字符能正常顯示,就需要轉義,如Python中\n代表回車,HTML中?代表空格等等。
Python中的’‘是轉義控制符,如果要表達\本身則需要使用’’,常見于Windows系統的路徑中(使用’/'則不需要轉義)。

unicode轉義

有時候我們在響應文本中會看到一些\u開頭的字符串,如下例。

>>> import requests >>> res = requests.get('https://httpbin.org/get?name=張三&age=12') >>> print(res.text) {"args": {"age": "12","name": "\u5f20\u4e09"},"headers": {"Accept": "*/*","Accept-Encoding": "gzip, deflate","Host": "httpbin.org","User-Agent": "python-requests/2.24.0","X-Amzn-Trace-Id": "Root=1-5f8f8e42-6d1f34a2691b8bec579454a3"},"origin": "111.194.126.253","url": "https://httpbin.org/get?name=\u5f20\u4e09&age=12" }

響應體文本中,name后面對應是"\u5f20\u4e09",這是HTTP請求在傳輸時為了確保符合ASCII編碼對其他字符集做的unicode轉義。

注意這個只是打印結果,我們看看res.text的本來樣子。

>>> res.text '{\n "args": {\n "age": "12", \n "name": "\\u5f20\\u4e09"\n }, \n "headers": {\n "Accept": "*/*", \n "Accept-Encoding": "gzip, deflate", \n "Host": "httpbin.org", \n "User-Agent": "python-requests/2.24.0", \n "X-Amzn-Trace-Id": "Root=1-5f8f8e42-6d1f34a2691b8bec579454a3"\n }, \n "origin": "111.194.126.253", \n "url": "https://httpbin.org/get?name=\\u5f20\\u4e09&age=12"\n}\n'

可以看出name的實際值是"\u5f20\u4e09","\u5f20\u4e09" != “\u5f20\u4e09”,看下如下例子。

''' 學習中遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> name = "\u5f20\u4e09" >>> name '張三' >>> name = "\\u5f20\\u4e09" >>> name '\\u5f20\\u4e09' >>> print(name) \u5f20\u4e09

可見 “\u5f20\u4e09” 就是"張三",而"\u5f20\u4e09"是一個顯示為"\u5f20\u4e09"的字符串。

unicode轉義-解碼

如何將"\u5f20\u4e09"轉為"張三"呢?方法如下
先按utf-8編碼回二進制,然后按unicode-escape方式解碼為正常文本

>>> name = "\\u5f20\\u4e09" >>> name.encode('utf-8').decode('unicode-escape') '張三'

unicode轉義-編碼

如果想將"張三"轉為unicode轉義字符只需要反向操作即可。

>>> name = "張三" >>> name.encode('unicode-escape').decode('utf-8') '\\u5f20\\u4e09'

GBK轉義

有些中文網頁中有時會使用GBK編碼,形式為\x開頭的字符如。

>>> name = "張三" >>> name.encode('gbk') b'\xd5\xc5\xc8\xfd'

這個二進制字符串b’\xd5\xc5\xc8\xfd’就是"張三",但如果我們拿到一個"\xd5\xc5\xc8\xfd"的普遍字符串呢?

操作方法如下。

''' 學習中遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> name = "\xd5\xc5\xc8\xfd" >>> name '??èy' >>> name.encode('latin1').decode('unicode-escape').encode('latin1').decode('gbk') '張三' >>> name = "\\xd5\xc5\\xc8\\xfd" >>> name.encode('latin1').decode('unicode-escape').encode('latin1').decode('gbk') '張三'

無論是"\xd5\xc5\xc8\xfd"還是"\xd5\xc5\xc8\xfd"都可以。

html轉義

在有些情況下我們需要解碼html文檔中的轉義字符,或者進行編碼,操作如下。

>>> import html >>> args='{"e": 5, "f": 6}' >>> html.escape(args) # 轉義 '{"e": 5, "f": 6}' >>> html.unescape('{"e": 5, "f": 6}') # 轉回 '{"e": 5, "f": 6}'

url編碼

在url中需要對一些特殊字符進行編碼,比如在瀏覽器地址欄中輸入https://httpbin.org/get?name=張三&age=12’

然后復制-粘貼,你會發現網址變為了https://httpbin.org/get?name=%E5%BC%A0%E4%B8%89&age=12,這就是url為確保ASCII對特殊字符集非ASCII編碼進行的編碼。

如何解碼呢?方法如下。

>>> from urllib.parse import quote,unquote,urlencode >>> url = 'https://httpbin.org/get?name=%E5%BC%A0%E4%B8%89&age=12' >>> unquote(url) 'https://httpbin.org/get?name=張三&age=12'

如果想要進行urlencode編碼,則需要使用quote和urlencode,quote對字符串進行編碼,一般只用于單個參數值,urlencode則對一組字典格式的參數進行編碼組裝。

示例如下:

>>> name = "張三" >>> quote(name) '%E5%BC%A0%E4%B8%89' >>> url = f'https://httpbin.org/get?name={name}&age=12' >>> url 'https://httpbin.org/get?name=張三&age=12' >>>

>>> params = {"name": "張三", "age": 12} >>> urlencode(params) 'name=%E5%BC%A0%E4%B8%89&age=12' >>> url = f'https://httpbin.org/get?{urlencode(params)}' >>> url 'https://httpbin.org/get?name=%E5%BC%A0%E4%B8%89&age=12'

base64編碼

編碼和加密的不同在于,編碼一般為了傳輸或者壓縮,支持解碼。加密后則一般不能反解。
base64一般用于在接口中,將圖片或媒體變為一種固定長度的字符串形式,方便傳輸。
base64編碼解碼方法如下。

編碼

''' 學習中遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' >>> import base64 >>> a = 'lts' >>> b =a.encode('utf-8') >>> base64.b64encode(b) b'bHRz' >>> base64.b64encode(b).decode('utf-8') 'bHRz'

解碼

>>> base64.b64decode('bHRz').decode('utf-8') 'lts' >>> base64.b64decode(b'bHRz').decode('utf-8') 'lts' >>>

總結

以上是生活随笔為你收集整理的Python中必知的知识点:文本转义及编码的常用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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