Emoji конвертировать с помощью python - (\ ud83d \ udc40) в реальный символ эмодзи ? - PullRequest
0 голосов
/ 06 сентября 2018

У меня простой (но чрезвычайно сложный) вопрос.

Я ищу способ преобразовать текстовый файл, который содержит этот тип кода смайликов (\ud83d\udc40) и заменить его на тот, который будет содержать - настоящий символ смайликов 4

Е.Г.

with open(OUTPUT, "r+") as infileInsight:

    insightData = infileInsight.read()\
       .replace('\ud83d\udc40','?')\
       ......

    with open(OUTPUT, "w+") as outfileInsight:
            outfileInsight.write(insightData)

По поводу того, что оно дублируется: Если я сделаю так:

with open(OUTPUT, "r+") as infileInsight:

    insightData = infileInsight.read()\
       .replace('\ud83d\udc40','?')\
       ......

    with open(OUTPUT, "w+") as outfileInsight:
            outfileInsight.write(insightData.decode('unicode-escape'))

У меня ошибка: UnicodeEncodeError: кодек 'ascii' не может кодировать символ u '\ u2600' в позиции 30: порядковый номер не в диапазоне (128)

1 Ответ

0 голосов
/ 06 сентября 2018

Вам просто нужна опция ensure_ascii=False в json.dump.

Если вы сначала создаете этот файл, просто передайте этот параметр.

Если кто-то другой дал вам этот файл JSON, и вы хотите изменить его на использование символов Юникода непосредственно в строках (в отличие от экранирования Юникода, как сейчас), вы можете сделать что-то вроде этого:

import json

with open('input.txt', 'r') as infile:
    with open('output.txt', 'w') as outfile:
        for line in infile:
            data = json.loads(line)
            json.dump(data, outfile, ensure_ascii=False)
            outfile.write('\n')
...