我有一组ics数据,我正在尝试在python中进行解析。该日期使用emjois表示不同类型的事件。因此,我试图在if语句中使用这些emjois告诉事件类型是什么。我正在尝试这样比较:
if event == '✈️':
do something here
当事件等于✈️
时,它的评估结果为true。我猜想它与编码有关,但是我无法将其包裹住。任何帮助将不胜感激
答案 0 :(得分:1)
该特定字符表示为两个代码点。在Python 2中,您还需要声明源文件的编码以在源中使用非ASCII,并在事件和要比较的项目中使用Unicode字符串:
#coding:utf8
event = u'\u2708\ufe0f'
if event == u'✈️':
print 'match'
输出:
match
您的事件可能不是Unicode字符串。选中type(event)
和print repr(event)
以查看其实际内容。
您可以获取非Unicode字符串进行比较,但是必须以相同的方式对其进行编码。同样,需要print repr(event)
来查看问题所在。理想情况下,将输入文本解码为Unicode,以代码中的Unicode处理,编码回字节以将文本写回数据库,文件,网络管道等。
此外,切换到Python 3,它具有更好的Unicode处理能力。
答案 1 :(得分:0)
尝试先转换为字符串,然后对该字符串进行编码。
#convert to unicode
teststring = unicode(teststring, 'utf-8')
#encode it with string escape
teststring = teststring.encode('unicode_escape')
#then run check on test string.
if event == testString
do #this code.