Python 2.7 - Elasticsearch - SyntaxError:非ASCII字符'\ xc3'

时间:2016-07-08 12:27:13

标签: python-2.7 elasticsearch character-encoding non-ascii-characters python-unicode

我正在使用带有python 2.7的elasticsearch。我必须分析并存储大量文本;经常会出现以下错误: SyntaxError:非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)

错误是:

  

SyntaxError:第4行/home/user/PycharmProjects/ubuntu/asciiTest.py文件中的非ASCII字符'\ xc3',但未声明编码。

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

unicode(test, errors='ignore')

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

1 个答案:

答案 0 :(得分:1)

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

错误通常会附带一条消息,提示您注意PEP-263 - https://www.python.org/dev/peps/pep-0263/

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

# coding=<encoding name>

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

使用非ASCII时,您应该使用Unicode字符串。您只需在字符串值前添加u即可实现此目的。

E.g。

test = u'sarà'

删除unicode()的所有用途。恕我直言,unicode()不应该在没有给定编码的情况下使用