【问题标题】:Parsing json file using Python3使用 Python3 解析 json 文件
【发布时间】:2016-06-19 05:37:30
【问题描述】:

我使用 Twitter 的流 API 生成了一个 .json 文件。因此,我的 .json 文件有多个包含为断开连接的 json 对象的推文。在使用 'jsonlint' 进行验证后,我不断收到 EOF 错误。有没有可能解决这个问题。我的最终目标是根据关键字和主题标签直观地分析 Twitter 趋势。以下是我的代码:

import json
import pandas as pd
import matplotlib.pyplot as plt


tweets_data_path = 'import_requests.txt'

tweets_data = []
tweets_file = open(tweets_data_path, "r")

for line in tweets_file:
  try:
    tweet = json.loads(line)
    tweets_data.append(tweet)
  except:
    continue

print(len(tweets_data))

tweets = pd.DataFrame()

tweets['text'] = map(lambda tweet: tweet['text'], tweets_data)

【问题讨论】:

  • 遍历行,使用json.loads加载每一行
  • 问题是当我在我的变量上使用 map() 函数时。
  • 什么意思?您应该显示代码。
  • @AbhijeetMohanty:停止发布对数据、错误消息和问题的异地和跨站点引用。请花时间以连贯的方式将您的问题放在一起。它使为您提供帮助变得更加轻松

标签: python json python-3.x twitter


【解决方案1】:

好吧,我终于把关于这个问题的所有点点滴滴都拼凑在一起......并发现一切都按预期工作。至少在map() 期间没有引发异常。 json 文件解析成功。

在 Python 2 和 3 上使用 pandas-0.16.2。

我注意到 Python 3 的一件事是 map() 返回一个 map 对象,而不是完全呈现的列表。所以数据框看起来像这样:

                              text
0   <map object at 0x7fd3a6a94f60>
1   <map object at 0x7fd3a6a94f60>
2   <map object at 0x7fd3a6a94f60>
....

也许这是你或你的熊猫版本的问题。

您可以通过使用列表推导来解决这个问题:

tweets['text'] = [tweet['text'] for tweet in tweets_data]

或将map() 包装成list()

tweets['text'] = list(map(lambda tweet: tweet['text'], tweets_data))    

那么你应该得到这个:

>>> tweets
                                                 text
0   Tumi Inc. civil war: Staff manning US ceasefir...
1   #bigdata #SaaS RT CStoreNews_: (Cheat Sheet) D...
2   #bigdata #SaaS RT priyaank: 24 #DataScience, #...
3   #python dropbox_tools 1.2: A collection of com...
....

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 2020-05-07
    相关资源
    最近更新 更多