当前位置: 首页 > 面试题库 >

如何在python3中处理URL中的unicode字符串?

高自怡
2023-03-14
问题内容
# -*- coding: utf-8 -*- 
# Python3
import urllib
import urllib.request as url_req
opener = url_req.build_opener()
url='http://zh.wikipedia.org/wiki/'+"毛泽东"
opener.open(url).read()
# opener.open(url.encode("utf-8")).read()
# # doesn't work either

当我运行它时,它抱怨:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-12: ordinal not in range(128)

但是我不能使用.encode(),因为它会抱怨:

Traceback (most recent call last):
  File "t.py", line 8, in <module>
    opener.open(url.encode("utf-8")).read()
  File "/usr/local/Cellar/python3/3.2.2/lib/python3.2/urllib/request.py", line 360, in open
    req.timeout = timeout
AttributeError: 'bytes' object has no attribute 'timeout'

有人知道如何处理吗?


问题答案:

您可以使用urllib.parse.quote()对URL的路径部分进行编码。

#!/usr/bin/env python3
from urllib.parse   import quote
from urllib.request import urlopen

url = 'http://zh.wikipedia.org/wiki/' + quote("毛泽东")
content = urlopen(url).read()


 类似资料:
  • 问题内容: 在2010年,您是否会在大型Web门户中提供包含UTF-8字符的URL? 根据URL上的RFC禁止使用Unicode字符。必须对它们进行百分比编码以符合标准。 不过,我的主要观点是提供未编码的字符,其唯一目的是拥有美观的URL,因此百分比编码已被淘汰。 不论RFC怎么说,所有主流浏览器似乎都可以解析这些URL。不过,我的总体印象是,离开网络浏览器领域时,它变得非常不稳定: URL复制并

  • 问题内容: 我正在处理python-lastfm库返回的unicode字符串。 我假设在途中某个地方,该库获取了错误的编码,并返回了可能包含无效字符的unicode字符串。 例如,我期望变量a中的原始字符串为“G​​lück” \ xfc是转义值252,它对应于latin1编码的“ü”。它以某种方式以python无法自行处理的方式嵌入到unicode字符串中。 如何将其转换回包含原始“Glück”

  • 问题内容: 我用这个: 但是Python 3出现了错误(或者…也许我只是忘了包含一些东西): 谢谢。 问题答案: 在Python3中,文字字符串默认为unicode。 假设这是一个对象,只需使用 的Python2等效于Python3,因此您还可以编写: 若你宁可。

  • 我在WSO2 ESB中使用GET方法定义了如下API资源: 现在,如果我通过标准浏览器(如chrome或firefox)调用API,它可以正常工作,并且我得到的响应代码是ok 200 但是我不能通过Postman调用这个API,它返回NotFound404。如果我将“سلام”替换为像“hello”这样的标准ascii字符串,它工作正常,并返回代码ok 200: 我在postman的Headers

  • 本文向大家介绍C语言中字符和字符串处理(ANSI字符和Unicode字符),包括了C语言中字符和字符串处理(ANSI字符和Unicode字符)的使用技巧和注意事项,需要的朋友参考一下 我们知道,C语言用char数据类型表示一个8位的ANSI字符,默认在代码中声明一个字符串时,C编译器会把字符串中的字符转换成由8位char数据类型构成的一个数组: Microsoft的C/C++编译器定义了一个内建的

  • 问题内容: 假设我有一个包含Ü的字符串。我将如何找到所有这些unicode字符?我应该测试他们的代码吗?我该怎么做? 例如,给定字符串“AÜXÜ”,我想将其转换为“ AYXY”。我想对其他unicode字符执行相同的操作,并且我不希望将它们存储在某种翻译图中。 问题答案: “ unicode字符”的定义含糊不清,但是将被视为表示标准ISO 8859字符集 未涵盖的UTF-8 字符。如果您的情况是这