搜索字符串时出现python编码错误

时间:2013-12-15 09:15:34

标签: python string unicode encode

尝试搜索

下面的字符串时出现以下错误

ERROR:

SyntaxError: Non-ASCII character '\xd8' in file Hadith_scraper.py on line 44, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

STRING:

دَّثَنَا عَبْدَانُ، قَالَ أَخْبَرَنَا عَبْ

CODE:

arabic_hadith = "دَّثَنَا عَبْدَانُ، قَالَ أَخْبَرَنَا عَبْ"
arabic_hadith.encode('utf8')
print arabic_hadith
if "الجمعة" in arabic_hadith:‎
    day = "5"
else:
    day = ""

1 个答案:

答案 0 :(得分:4)

您有一个字节字符串,而不是unicode值。尝试在Python 2中编码字节字符串意味着Python将首先尝试将其解码为unicode,以便它可以进行编码。

此处使用unicode值,并确保首先将编解码器设置在文件顶部。请参阅PEP 263 - Defining Python Source Code Encodings(您的错误消息指向您)。

请注意,无需在此处编码为UTF8,这只会使文本比较复杂化:

# encoding: utf8
arabic_hadith = u"دَّثَنَا عَبْدَانُ، قَالَ أَخْبَرَنَا عَبْ"
print arabic_hadith
if u"الجمعة" in arabic_hadith:‎
    day = "5"
else:
    day = ""

经验法则:将来自传入源(文件,网络数据)的字节解码为Unicode,在程序中仅处理Unicode,并且只对任何传出数据进行再次编码。

我恳请你阅读:

继续之前。