Очистка данных в файле с помощью python - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь очистить твиттер данных в python с помощью регулярных выражений, но я не могу удалить ufe64f.Данные из твиттера находятся в файле datas.txt, это данные:"Berkat biznet aku bisa online terimakasih BiznetHome \ ufe64f Gangguan hari sabtu perbaikan nanti senin hari оффлайн Медленный откликberfungsi нормально спасибо atas response dan perbaikan pihak Indihom \ u2026 "

Я пробовал три способа:
Первый

import re

with open ('datas.txt', 'r') as f:
     mylist = [line for line in f]
emoji_pattern = re.compile(r'\\\\u\w+')
for i in mylist:
    print(emoji_pattern.sub(r'', i))


Второй

import re
f = open('datas.txt', 'r')
data = f.read()
emoji_pattern = re.compile("["
                u"\U0001F600-\U0001F64F"  # emoticons
                u"\U0001F300-\U0001F5FF"  # symbols & pictographs
                u"\U0001F680-\U0001F6FF"  # transport & map symbols
                u"\U0001F1E0-\U0001F1FF"  # flags (iOS)
                u"\U00002702-\U000027B0"
                u"\U000024C2-\U0001F251"
                u"\U0001f926-\U0001f937"
                u'\U00010000-\U0010ffff'
                u"\u200d"
                u"\u2640-\u2642"
                u"\u2600-\u2B55"
                u"\u23cf"
                u"\u23e9"
                u"\u231a"
                u"\u3030"
                u"\ufe0f"
    "]+", flags=re.UNICODE)
emoji_pattern.sub(r'', data)


третий

f= open("datas.txt", "r", encoding="UTF-8")
datas = f.read()
data = datas.encode('ascii', 'ignore').decode("utf-8")
print(data)

но все равно не работает

1 Ответ

0 голосов
/ 25 марта 2019

Ваш текстовый файл содержит кодовые точки Unicode, отличные от ASCII, закодированные в соответствии с , как Python кодирует литералы Unicode в исходном коде .С этим можно сделать две вещи:

  • Удалить все последовательности \uXXXX или \UXXXXXXXX из ваших данных.Это удалит все кодовые точки Unicode, написанные в буквальном формате Python, которые в принципе (хотя и не обязательно) будут не-ASCII-символами.Это можно сделать, например, следующим образом:
import re

with open ('datas.txt', 'r') as f:
     mylist = [line for line in f]
unicode_literal = re.compile(r'\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}')
for i in mylist:
    print(unicode_literal.sub(r'', i))
  • Интерпретировать кодовые точки Unicode как их предполагаемое значение.Таким образом, вы получите строку с данными не-ASCII, соответствующими кодовым точкам, выраженным в текстовом файле.Вы можете сделать это так:
# Note file is read in byte mode
with open ('datas.txt', 'rb') as f:
     mylist = [line for line in f]
for i in mylist:
    print(mylist.decode('unicode-escape'))
...