使用 python 清理文件中的 \u2764\ufe0f \u2026 数据

Cleaning \u2764\ufe0f \u2026 data in file with python

我尝试使用正则表达式清理 python 中的数据 twitter,但我无法删除 \u2764\ufe0f \u2026。 twitter 数据在 datas.txt 文件中,这是数据:

Berkat biznet aku bisa online terimakasih BiznetHome \u2764\ufe0f Gangguan hari sabtu perbaikan nanti senin hari offline Slow respon \u2764\ufe0f Terima kasih TelkomCare masalah indihome sy sudah terselesaikan terima kasih fast responnya terus selalu tingka\u2026 TelkomCare Sudah beres fix internet dan telpon berfungsi normal thanks atas respons 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)

但还是不行

您的文本文件包含根据 how Python encodes Unicode literals in source code 编码的非 ASCII Unicode 代码点。您可以用它做两件事:

  • 从您的数据中删除所有 \uXXXX\UXXXXXXXX 序列。这将删除所有以 Python 文字格式编写的 Unicode 代码点,原则上(尽管不一定)将是非 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'))