国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-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 編程
相關文章:
主站蜘蛛池模板: 国产精品久久久久久影视 | 欧美三区在线观看 | 亚洲欧美日韩高清在线看 | 欧美成年 | 欧美aaa级| 国产三级在线观看播放 | 中文字幕中文字幕中中文 | 国产乱淫a∨片免费视频 | 亚洲免费视频在线观看 | 国产永久高清免费动作片www | 日本黄色官网 | 黄色毛片视频网站 | 久久久久久久岛国免费观看 | 欧美午夜不卡在线观看最新 | 成人免费视频国产 | 日韩精品在线看 | 日本免费人成黄页网观看视频 | 5x社区直接进入一区二区三区 | 啪啪一级 | 欧美精品综合一区二区三区 | 久操福利视频 | 亚洲国产一区二区三区四区 | 99精品国产在现线免费 | 亚洲欧美94色 | 特级做人爱c级特级aav毛片 | 免费观看欧美一级高清 | 国产在线一区观看 | 日韩欧美在线一级一中文字暮 | 国产一区二区三区视频 | 手机午夜看片 | 国产成人免费不卡在线观看 | jyzzjyzz国产免费观看 | 看亚洲a级一级毛片 | 国产精品欧美亚洲 | 精品久久久久久综合网 | 一本色道久久99一综合 | 亚洲影院在线 | se94se欧美综合色 | 亚洲欧洲国产精品 | 杨幂精品国产专区91在线 | 久久免费精品国产72精品剧情 |