Преобразование в эмодзи
Поэтому я пытаюсь взять эти данные, которые используют индикаторы юникода, и напечатать их с помощью смайликов. Это в настоящее время в текстовом формате. файл, но я напишу в файл 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 ответа
Вот как данные были изначально созданы...
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)
Ваш эмодзи представлен как суррогатная пара, см. Также здесь для получения информации об этом конкретном глифе. Python не может декодировать суррогаты, поэтому вам нужно посмотреть, как именно tweets.txt
файл был сгенерирован, и попробуйте закодировать оригинальные твиты вместе с эмодзи, как UTF-8. Это значительно облегчит чтение и обработку текстового файла.