国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python 的requests問題

瀏覽:85日期:2022-07-30 09:21:43

問題描述

導入requests,提示報錯 ’’’ UnicodeDecodeError: ’ascii’ codec can’t decode byte 0xc9 in position 1: ordinal not in range(128)’’’問題查了,一般是字符之間轉換的。但是到了庫這里,就不懂了什么原因。。。。小生愚鈍,請教各位老師,請指點一二,麻煩了。

導入BeautifulSoup,它是正常的。下面是報錯的具體信息。

PS :不是本專業的,想學習一點計算機方面的。學個爬蟲玩玩。英語比較菜。。。

Traceback (most recent call last): File 'F:/untitled29/lianxi.py', line 5, in <module> import requests File 'F:Python27libsite-packagesrequests__init__.py', line 52, in <module> from .packages.urllib3.contrib import pyopenssl File 'F:Python27libsite-packagesrequestspackagesurllib3contribpyopenssl.py', line 47, in <module> from cryptography import x509 File 'F:Python27libsite-packagescryptographyx509__init__.py', line 7, in <module> from cryptography.x509.base import ( File 'F:Python27libsite-packagescryptographyx509base.py', line 16, in <module> from cryptography.x509.extensions import Extension, ExtensionType File 'F:Python27libsite-packagescryptographyx509extensions.py', line 14, in <module> from asn1crypto.keys import PublicKeyInfo File 'F:Python27libsite-packagesasn1cryptokeys.py', line 22, in <module> from ._elliptic_curve import ( File 'F:Python27libsite-packagesasn1crypto_elliptic_curve.py', line 51, in <module> from ._int import inverse_mod File 'F:Python27libsite-packagesasn1crypto_int.py', line 56, in <module> from ._perf._big_num_ctypes import libcrypto File 'F:Python27libsite-packagesasn1crypto_perf_big_num_ctypes.py', line 31, in <module> libcrypto_path = find_library(’crypto’) File 'F:Python27libctypesutil.py', line 51, in find_library fname = os.path.join(directory, name) File 'F:Python27libntpath.py', line 85, in join result_path = result_path + p_pathUnicodeDecodeError: ’ascii’ codec can’t decode byte 0xc9 in position 1: ordinal not in range(128)

問題解答

回答1:

如果只是玩一玩的話可以考慮直接使用Python3,比起Python2,Python3的字符編碼問題會少很多。

回答2:

看你的錯誤提示應該lanxi.py的編碼格式有問題,你可以先到cmd控制臺運行python再import試一下,應該不是requests有問題

回答3:

ssl 的加密功能包的文件夾路徑有特殊字符

換py3吧, 2總有各種各樣的編碼問題

回答4:

result_path = result_path + p_path

這句代碼的變量是不是有中文, 你可以都打印出來看看, 或者將它們都以unicode的形式存

result_path = u’xxx’p_path = u’xxx’或者 通過decode函數將變量轉成unicode回答5:

UnicodeDecodeError是字符解碼失敗的原因,這不僅是requests的問題,也不僅是python的問題,所有編程語言都有這樣的“問題”,也就是必須要了解字符編碼。具體的字符編碼可以查詢資料。下面py2中的字符編碼問題。

py2的用引號聲明的字串類型都是str,字串前加一個u聲明的才是unicode。網絡IO,文件讀寫中傳輸的字符都是編碼成bytes,即str類型。載入到計算機執行計算,一般都要解碼成unicode。py2的str方法實際上是’’.encode(’ascii’), unicode方法是’’.decode(’ascii’)

In [1]: s = u’你好’In [2]: str(s)---------------------------------------------------------------------------UnicodeEncodeErrorTraceback (most recent call last)<ipython-input-2-d22ffcdd2ee9> in <module>()----> 1 str(s)UnicodeEncodeError: ’ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)In [3]: s.decode(’ascii’)---------------------------------------------------------------------------UnicodeEncodeErrorTraceback (most recent call last)<ipython-input-3-735804de5fd4> in <module>()----> 1 s.decode(’ascii’)UnicodeEncodeError: ’ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)In [4]: ss = ’你好’In [5]: unicode(ss)---------------------------------------------------------------------------UnicodeDecodeErrorTraceback (most recent call last)<ipython-input-5-6325006f91c2> in <module>()----> 1 unicode(ss)UnicodeDecodeError: ’ascii’ codec can’t decode byte 0xe4 in position 0: ordinal not in range(128)In [6]: ss.decode(’ascii’)---------------------------------------------------------------------------UnicodeDecodeErrorTraceback (most recent call last)<ipython-input-6-b5dcf2f3b46d> in <module>()----> 1 ss.decode(’ascii’)UnicodeDecodeError: ’ascii’ codec can’t decode byte 0xe4 in position 0: ordinal not in range(128)In [7]: ss.decode(’utf-8’)Out[7]: u’u4f60u597d’In [8]: ss.decode(’gbk’)Out[8]: u’u6d63u72b2u30bd’

因為ss = ’你好’是非ascii字符,因此以ascii方式解碼失敗,當解碼成utf-8和gbk就成功了。同理s=u’你好’也不能編碼成ascii的方式。

你上面的問題,應該是非ascii字符,decode成ascii字符的時候拋錯。result_path + p_path 即這兩個變量中,有一個變量是包含非ascii字符的str類型:

In [1]: ’hello’ + u’world’Out[1]: u’helloworld’In [2]: ’hello’ + u’世界’Out[2]: u’hellou4e16u754c’In [3]: ’你好’ + u’世界’---------------------------------------------------------------------------UnicodeDecodeErrorTraceback (most recent call last)<ipython-input-3-8c1827afc847> in <module>()----> 1 ’你好’ + u’世界’UnicodeDecodeError: ’ascii’ codec can’t decode byte 0xe4 in position 0: ordinal not in range(128)In [4]: ’你好’ + ’世界’Out[4]: ’xe4xbdxa0xe5xa5xbdxe4xb8x96xe7x95x8c’In [5]: ’你好’ + ’世界 world’Out[5]: ’xe4xbdxa0xe5xa5xbdxe4xb8x96xe7x95x8c world’In [6]: ’你好’ + u’世界 world’---------------------------------------------------------------------------UnicodeDecodeErrorTraceback (most recent call last)<ipython-input-6-dcdf837ec675> in <module>()----> 1 ’你好’ + u’世界 world’UnicodeDecodeError: ’ascii’ codec can’t decode byte 0xe4 in position 0: ordinal not in range(128)In [9]: ’你好’ + u’world’---------------------------------------------------------------------------UnicodeDecodeErrorTraceback (most recent call last)<ipython-input-9-1be7bc8e74d5> in <module>()----> 1 ’你好’ + u’world’UnicodeDecodeError: ’ascii’ codec can’t decode byte 0xe4 in position 0: ordinal not in range(128)

’你好’中的中文不是ascii字符,和unicode字符拼接的時候,會解碼成unicode再拼接,對于最后的例子,’你好’ + u’world’,其實執行的是 ’你好’.decode(’ascii’) + u’world’,所以就報錯。

校正的方式很簡單,統一字符編碼就好。linux的py默認編碼是utf-8,win貌似是gbk。不管怎么樣,總之都用utf-8吧。

In [10]: ’你好’.decode(’utf-8’) + u’world’Out[10]: u’u4f60u597dworld’

py3中,所有引號聲明的字串都是unicode。也就不存在str和unicode這兩種類型。其中str編碼成bytes類型,bytes解碼成字串類型。兩種的相互轉換的時候,還是會有 UnicodeDecodeError 問題,不要以為用了py3就能萬事大吉,解決的問題關鍵是知道如何編碼解碼,就能一勞永逸。

>>> s = ’中文’>>> s.encode(’utf-8’)b’xe4xb8xadxe6x96x87’>>> s.encode(’ascii’)Traceback (most recent call last): File '<stdin>', line 1, in <module>UnicodeEncodeError: ’ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)>>> print(type(s.encode(’utf-8’)))<class ’bytes’>>>> print(type(s))<class ’str’>

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 未成人做爰视频www 窝窝午夜精品一区二区 | 久久高清影院 | 色老头久久网 | 久章草视频 | 欧美 亚洲 丝袜 清纯 中文 | 欧美人成在线观看 | 午夜一级做a爰片久久毛片 午夜伊人网 | 成人精品| 欧美一级日韩在线观看 | 免看一级a一片成人123 | 在线91精品亚洲网站精品成人 | 成人国产视频在线观看 | 成人软件18免费 | 波野多衣在线观 | 宅女福利视频在线看免费网站 | xh98hx国产在线视频 | 国产精品亚洲专区在线播放 | 国产日韩欧美视频在线 | 窝窝午夜精品一区二区 | 亚洲国产高清视频在线观看 | 久久99久久99精品观看 | 毛片网站在线播放 | 久久精品国产99精品最新 | 国产精品久久免费视频 | 美女色黄网站 | 性欧美视频a毛片在线播放 性欧美一级 | 91亚洲免费| 偷自拍| 国产美女一级毛片 | 日本成人在线免费 | 亚洲激情自拍 | 欧美另类视频一区二区三区 | 一本大道香蕉久在线不卡视频 | 日本三级一区二区三区 | 正在播放国产大学生情侣 | 特级a欧美做爰片毛片 | 国产一区二区三区在线观看影院 | 美女毛片在线看 | 国产最新网站 | 狠色狠狠色狠狠狠色综合久久 | 国产玖玖玖精品视频 |