python-3.x - 从命令行参数到 Python 3 中的 URL 的 Unicode

标签 python-3.x unicode scrapy

如果我构建一个准系统,它运行良好。但是在我的实际代码中,我收到了与 Unicode 相关的错误。

temp_url = "http://search.jd.com/Search?keyword=" + quote(self.keywords)

File "/usr/lib/python3.5/urllib/parse.py", line 706, in quote string = string.encode(encoding, errors)

UnicodeEncodeError: 'utf-8' codec can't encode character '\udce8' in position 0: surrogates not allowed

我正在使用一个参数将我的搜索字符串传递给 Scrapy (1.4):

scrapy crawl jdspider -a keywords="电灯"

相关代码如下:

# -*- coding: utf-8 -*-
import scrapy, re
from urllib.parse import quote

def __init__(self, keywords=''):
    self.keywords = keywords.strip()

    temp_url = "http://search.jd.com/Search?keyword=" + quote(self.keywords)
    print ( temp_url )

所以打印甚至不会被执行 - 某事。不适用于 quote 方法。

python 3.5.2 碎片化 1.4.0 Ubuntu 16.04

我做错了什么?

最佳答案

当您使用中文或任何其他语言的字符或符号时,这类问题很常见。
尝试使用 utf-8 以外的任何其他应用编码器对字符串进行编码。
https://docs.python.org/3/library/codecs.html#standard-encodings

但是,第一个问题,删除这个字符是否会使信息变得无用或者可能在某些方面不再那么有用。

如果这不是问题,请尝试删除该角色。 它似乎是字符串中的第一个字符。

使用 Try 和 Except 来捕获异常 然后
-- 删除第一个字符
或更好
使用 for 循环检查每个字符并删除您无法编码的字符。

关于python-3.x - 从命令行参数到 Python 3 中的 URL 的 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44484201/

相关文章:

python - 尝试创建一个仅包含唯一数字的排序列表

unicode - 快速的、支持 Unicode 的、跨平台的程序员文本编辑器,显示像 ZWSP 这样的不可见内容?

python-3.x - python中通过爬取子URL来下载文件

python - 序列化模型列表时,获取“QuerySet”对象没有属性“_meta”错误

python - 如何分析库的大小

python - 为什么我必须为每个新项目重新安装所有 python 模块? (皮查姆)

python - Scrapy - 没有名为 mail.smtp 的模块

php - 替换unicode字符

mysql - 我通过 mysqldump 导出到一个文件。如何找出文件的文件编码?

python - 当我使用 scrapy xpath 时如何使用 count()