【发布时间】:2018-04-02 06:23:14
【问题描述】:
我正在做一些推特挖掘,并通过 pandas 将推文的 json 提取到 python3 中
在进一步处理之前,我注意到很多数据不一致/不干净,甚至对我有用(目前) 所以我使用正则表达式使推文字符串一致或删除有问题的项目
下面是:
data['full_text'] = data['full_text'].replace('^@ABC(\\u2019s)*[ ,\n\t]*', '', regex=True)
data['full_text'] = data['full_text'].replace('(\\n)', '', regex=True)
data['full_text'] = data['full_text'].replace('(\\t)', '.', regex=True)
data['full_text'] = data['full_text'].replace('(\\u2018)|(\\u2019)', "'",
regex=True)
data['full_text'] = data['full_text'].replace('(\\u201c)|(\\u201d)', "\"", regex=True)
data['full_text'] = data['full_text'].replace('(\\n)|(\\t)', '', regex=True)
即 - 如果在开始时使用,则删除 twitter 句柄(包括链接到它的标点符号) - json 应该没有撇号的问题。保持一切一致,并用单个 ' 替换左/右撇号的 unicode - 一些推文使用反斜杠表示引用,其他推文使用 unicode。保持一致并用 \" 替换 unicode - 删除所有标签 - 假设所有新行都是新句子,所以用句号替换它们
据我所知,这就是真正需要的。 ~ 之类的东西可能是无用的,对它们没有真正的目的。推文也会有我不关心的表情符号(暂时)
其余的标点符号和这些表情符号遵循 \uXXXX 格式 其中 x 是数字或字母
所以我的最后一行计划如下:
data['full_text'] = data['full_text'].replace('(\\u\w\w\w\w)', "", regex=True)
鉴于我拥有大量推文,我无法验证一切是否正常,这就是为什么有人可以提供一些建议?
根据我的研究,我不断看到人们发布以下内容:
([\u2600-\u27BF])|([\uD83C][\uDF00-\uDFFF])|([\uD83D][\uDC00-\uDE4F])|([\uD83D][\uDE80-\uDEFF])
但是当我尝试这些时,我仍然会看到 json 中留下的表情符号等。那么为什么不直接使用 \u\w\w\w\w ??? (尤其是最后使用的时候?)
============================================== ========================== 更新:
data['full_text'] = data['full_text'].replace('^@ABC(\\u2019s)*[ ,\n\t]*', '', regex=True)
data['full_text'] = data['full_text'].replace('(\\n)', '', regex=True)
data['full_text'] = data['full_text'].replace('(\\t)', '.', regex=True)
data['full_text'] = data['full_text'].replace('(\\u2018)|(\\u2019)', "'", regex=True)
data['full_text'] = data['full_text'].replace('(\\u201c)|(\\u201d)', "\"", regex=True)
data['full_text'] = data['full_text'].replace('https:\/\/t.co\/(\w{10})', "", regex=True)
import string
data['full_text'] = data['full_text'].replace('[^{}]'.format(string.printable), '', regex=True)
感谢 James,尽管我得到的信息相互矛盾。最后一行合适吗?它是否删除了除 unicode 之外的任何内容?
【问题讨论】:
-
can i use (\\u\w\w\w\w) to remove all unicode from tweet json可能不会…… -
为什么不呢?在 regex101 中,它似乎在一些示例中删除了所有 unicode 而没有触及实际消息
-
显示一些示例数据(json)和预期的最终处理结果。
标签: python json regex python-3.x unicode