【问题标题】:Removing unncessary details for twitters extended_tweet column in JSON/Python删除 JSON/Python 中 twitter 扩展推文列的不必要细节
【发布时间】:2020-06-09 13:45:44
【问题描述】:

我使用推特抓取工具下载了一些关于上次发生的体育赛事的推文。不幸的是,由于研究的性质,我无法返回并修改我的爬虫,因为该事件不会再次发生。推文分为几个类别,例如时间戳、date_created 等。

这些推文存储在 JSON 文件中,我目前正在将它们导出到 pandas

我关注的是每条推文详细信息中的文本和扩展推文类别。

Twitter 不久前允许用户发布更长的推文。在抓取推特数据时,如果推文低于初始(140?我相信)字符限制,那么整个推文的文本将毫无问题地显示在文本类别中,这正是我未来研究需要它的方式.

但是,任何超过字符限制的推文都会在“文本”类别中显示如下:

@thedamon @getify I worry adding new terms add complexity and may make it harder for people to learn JavaScript. A… <url> StackOverflow 不允许我显示后面的短 URL,但本质上,正如我刚才所说,它是完整帖子的短 twitter URL

如您所见,文本以“...”结尾,后跟一个链接。 要查看完整文本,我需要查看“extended_tweet”类别,然后将信息按如下方式放置:

{'full_text': '@thedamon @getify I worry adding new terms add complexity and may make it harder for people to learn JavaScript. A sort function is a function you send to sort. Learning a new acronym to abstract that adds unnecessary complexity.', 'display_text_range': [18, 229], 'entities': {'hashtags': [], 'urls': [], 'user_mentions': [{'screen_name': 'thedamon', 'name': 'Damon Muma', 'id': 29938474, 'id_str': '29938474', 'indices': [0, 9]}, {'screen_name': 'getify', 'name': 'getify', 'id': 16686076, 'id_str': '16686076', 'indices': [10, 17]}], 'symbols': []}}

如您所见,这比文字要详细得多。

我目前正在使用 Python 并试图围绕正则表达式进行思考。我可以轻松地将字符串从 index[i] 切片到 index[j] 但是因为所有推文的长度都不同,所以我需要确保从推文开始的那一点开始切片,'full_text': && 'display_text_range'

我并不是要找人帮我做作业,但我已经被这个问题困住了一段时间,我最初认为很容易的事情结果比我想象的要困难得多。

有没有人有任何可以帮助我自己解决问题的指示或建议?

谢谢

【问题讨论】:

  • 我不知道,但尽量不要添加任何新的首字母缩略词!

标签: python json regex pandas twitter


【解决方案1】:

为什么不解析 JSON 以获取 full_text 属性?

import json

data = '''
{"full_text": "@thedamon @getify I worry adding new terms add complexity and may make it harder for people to learn JavaScript. A sort function is a function you send to sort. Learning a new acronym to abstract that adds unnecessary complexity.", "display_text_range": [18, 229], "entities": {"hashtags": [], "urls": [], "user_mentions": [{"screen_name": "thedamon", "name": "Damon Muma", "id": 29938474, "id_str": "29938474", "indices": [0, 9]}, {"screen_name": "getify", "name": "getify", "id": 16686076, "id_str": "16686076", "indices": [10, 17]}], "symbols": []}}'''

parsed_data = json.loads(data)
print(parsed_data['full_text']) # prints full tweet '@thedamon @getify I worry .... unnecessary complexity.'

【讨论】:

  • 有没有办法为 JSON 文件中的每一行实现这一点?一些推文包含扩展推文方面的“NaN”,因为它们足够短以适合文本,我需要我的代码为包含全文字段中条目的大文件(40k+ 推文)中的每条推文提取它
  • 最后一条评论。为了实现我的目标,解析正是我所需要的。非常感谢您,现在代码有一些小问题,但没有什么是我自己无法解决的,感谢您为我指明正确的方向!
  • 您可以使用open函数读取文件,然后进行相应的解析。如果 JSON 文件包含推文数组,则只需解析并循环访问并像 python dicts 一样访问。
  • 使用json.load 读取文件stackoverflow.com/questions/39719689/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
相关资源
最近更新 更多