Python 2.7 - Elasticsearch - 语法错误:非 ASCII 字符 '\xc3'

问题描述 投票:0回答:2

我正在使用带有 python 2.7 的 elasticsearch。我必须分析和存储大量文本;经常出现如下错误: 语法错误:非 ASCII 字符... 我编写了以下代码进行测试:

 import elasticsearch

 es = elasticsearch.Elasticsearch("127.0.0.1:9200")
 test = 'sarà'
 doc = {
 'ID':'123456',
 'field':unicode(test, errors='ignore'),
  }
 es.index('test_db','test',doc)

错误是:

语法错误:文件 /home/user/PycharmProjects/ubuntu/asciiTest.py 第 4 行中存在非 ASCII 字符 '\xc3',但未声明编码。

在阅读了 stackoverflow 上的其他答案后,我尝试了:

unicode(test, errors='ignore')

但又出现同样的错误。我不知道如何管理这些特殊字符。

python-2.7 elasticsearch character-encoding non-ascii-characters python-unicode
2个回答
1
投票

Python 告诉您您使用了非 ASCII 字符,但尚未声明源代码的格式。

该错误通常会伴随一条消息,提示您参考 PEP-263 - https://www.python.org/dev/peps/pep-0263/

您只需将以下内容添加到源代码的顶部即可:

# coding=<encoding name>

<encoding name>
是您用于源代码的编码。建议使用utf-8。

使用非 ASCII 时,应该使用 Unicode 字符串。您只需在字符串值前面添加

u
即可实现此目的。

例如

test = u'sarà'

删除所有

unicode()
的使用。恕我直言,如果没有给定编码,则永远不应该使用
unicode()


0
投票
对于任何登陆此处寻找此代码错误的人,请注意,这被声明为 Python2 !我碰巧遵循了提供的答案,而我的解决方案是使用 python3。

如果这看起来微不足道,我很抱歉,但我认为它可以为某个地方的某人减轻一些头痛。

© www.soinside.com 2019 - 2024. All rights reserved.