转换为表情符号

时间:2016-06-29 17:29:14

标签: python unicode python-3.5 emoji

所以我试图获取使用unicode指标的数据并使用emojis进行打印。它目前是一个TXT。文件但我稍后会写入excel文件。所以无论如何我得到一个错误我不知道该怎么办。这是我正在阅读的文字:

"Thanks @UglyGod \ud83d\ude4f https:\\/\\/t.co\\/8zVVNtv1o6\"
"RT @Rosssen: Multiculti beatdown \ud83d\ude4f https:\\/\\/t.co\\/fhwVkjhFFC\"

这是我的代码:

sampleFile= open('tweets.txt', 'r').read()
splitFile=sampleFile.split('\n')
for line in sampleFile:
    x=line.encode('utf-8')
    print(x.decode('unicode-escape'))

这是错误消息:

UnicodeDecodeError: 'unicodeescape' codec can't decode byte 0x5c in position 0: \ at end of string

有什么想法吗? 这就是数据最初生成的方式。

class listener(StreamListener):

    def on_data(self, data):
        # Check for a field unique to tweets (if missing, return immediately)
        if "in_reply_to_status_id" not in data:
            return
        with open("see_no_evil_monkey.csv", 'a') as saveFile:
            try:
                saveFile.write(json.dumps(data) + "\n")
            except (BaseException, e):
                print ("failed on data", str(e))
                time.sleep(5)
        return True

    def on_error(self, status):
        print (status)

2 个答案:

答案 0 :(得分:3)

您的表情符号表示为surrogate pair,有关此特定字形的信息,另请参阅here。 Python无法对代理进行解码,因此您需要准确了解tweets.txt文件的生成方式,并尝试将原始推文和表情符号编码为UTF-8。这将使阅读和处理文本文件变得更加容易。

答案 1 :(得分:3)

  

这是最初生成数据的方式...... saveFile.write(json.dumps(data) + "\n")

您应该使用json.loads()代替.decode('unicode-escape')来阅读JSON文字:

#!/usr/bin/env python3
import json

with open('tweets.txt', encoding='ascii') as file:
    for line in file:
        text = json.loads(line)
        print(text)