首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python解析(想想它的JSON)

Python解析(想想它的JSON)
EN

Stack Overflow用户
提问于 2019-12-16 02:42:16
回答 3查看 82关注 0票数 0

重新拟订的问题:

嗨,

当我运行这段代码时:

代码语言:javascript
复制
import pageviewapi
views = pageviewapi.per_article('en.wikipedia', 'Samuel_John_Carter','20150701','20191201', access='all-access', agent='user', granularity='monthly')   
print(views)
print(type(views))

我得到了这个结果:

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* AttrDict({'items': [{'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015070100', 'access': 'all-access', 'agent': 'user', 'views': 75}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015080100', 'access': 'all-access', 'agent': 'user', 'views': 64}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015090100', 'access': 'all-access', 'agent': 'user', 'views': 94}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015100100', 'access': 'all-access', 'agent': 'user', 'views': 90}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015110100', 'access': 'all-access', 'agent': 'user', 'views': 91}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2015120100', 'access': 'all-access', 'agent': 'user', 'views': 73}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016010100', 'access': 'all-access', 'agent': 'user', 'views': 91}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016020100', 'access': 'all-access', 'agent': 'user', 'views': 88}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016030100', 'access': 'all-access', 'agent': 'user', 'views': 82}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016040100', 'access': 'all-access', 'agent': 'user', 'views': 95}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016050100', 'access': 'all-access', 'agent': 'user', 'views': 86}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016060100', 'access': 'all-access', 'agent': 'user', 'views': 76}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016070100', 'access': 'all-access', 'agent': 'user', 'views': 75}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016080100', 'access': 'all-access', 'agent': 'user', 'views': 81}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016090100', 'access': 'all-access', 'agent': 'user', 'views': 79}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016100100', 'access': 'all-access', 'agent': 'user', 'views': 173}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016110100', 'access': 'all-access', 'agent': 'user', 'views': 170}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2016120100', 'access': 'all-access', 'agent': 'user', 'views': 84}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017010100', 'access': 'all-access', 'agent': 'user', 'views': 131}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017020100', 'access': 'all-access', 'agent': 'user', 'views': 76}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017030100', 'access': 'all-access', 'agent': 'user', 'views': 94}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017040100', 'access': 'all-access', 'agent': 'user', 'views': 234}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017050100', 'access': 'all-access', 'agent': 'user', 'views': 213}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017060100', 'access': 'all-access', 'agent': 'user', 'views': 286}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017070100', 'access': 'all-access', 'agent': 'user', 'views': 190}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017080100', 'access': 'all-access', 'agent': 'user', 'views': 186}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017090100', 'access': 'all-access', 'agent': 'user', 'views': 175}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017100100', 'access': 'all-access', 'agent': 'user', 'views': 212}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017110100', 'access': 'all-access', 'agent': 'user', 'views': 255}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2017120100', 'access': 'all-access', 'agent': 'user', 'views': 231}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018010100', 'access': 'all-access', 'agent': 'user', 'views': 339}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018020100', 'access': 'all-access', 'agent': 'user', 'views': 257}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018030100', 'access': 'all-access', 'agent': 'user', 'views': 299}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018040100', 'access': 'all-access', 'agent': 'user', 'views': 254}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018050100', 'access': 'all-access', 'agent': 'user', 'views': 262}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018060100', 'access': 'all-access', 'agent': 'user', 'views': 242}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018070100', 'access': 'all-access', 'agent': 'user', 'views': 197}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018080100', 'access': 'all-access', 'agent': 'user', 'views': 187}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018090100', 'access': 'all-access', 'agent': 'user', 'views': 191}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018100100', 'access': 'all-access', 'agent': 'user', 'views': 223}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018110100', 'access': 'all-access', 'agent': 'user', 'views': 256}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2018120100', 'access': 'all-access', 'agent': 'user', 'views': 211}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019010100', 'access': 'all-access', 'agent': 'user', 'views': 255}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019020100', 'access': 'all-access', 'agent': 'user', 'views': 244}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019030100', 'access': 'all-access', 'agent': 'user', 'views': 257}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019040100', 'access': 'all-access', 'agent': 'user', 'views': 230}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019050100', 'access': 'all-access', 'agent': 'user', 'views': 234}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019060100', 'access': 'all-access', 'agent': 'user', 'views': 199}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019070100', 'access': 'all-access', 'agent': 'user', 'views': 224}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019080100', 'access': 'all-access', 'agent': 'user', 'views': 207}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019090100', 'access': 'all-access', 'agent': 'user', 'views': 255}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019100100', 'access': 'all-access', 'agent': 'user', 'views': 265}, {'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019110100', 'access': 'all-access', 'agent': 'user', 'views': 330}]})
*/

<class 'attrdict.dictionary.AttrDict'>

我是个新手,白手起家。谁能建议一种获得所有时间戳的具体方法:从这个杂乱的输出中获取视图数据点吗?我很想知道这是嵌套字典还是json对象。

非常感谢任何人都能提供的帮助!

*原来的问题:在这里旋转我的轮子。我正在尝试处理Python脚本的输出。当我打印输出时,我会得到类似的内容(当然,更多)。

代码语言:javascript
复制
AttrDict({'items': [{'project': 'fr.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019010100', 'access': 'all-access', 'agent': 'user', 'views': 35}, {'project': 'fr.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019020100', 'access': 'all-access', 'agent': 'user', 'views': 11}]})
AttrDict({'items': [{'project': 'en.wikipedia', 'article': 'Giovanni_Battista_Merano', 'granularity': 'monthly', 'timestamp': '2015070100', 'access': 'all-access', 'agent': 'user', 'views': 35}, {'project': 'en.wikipedia', 'article': 'Giovanni_Battista_Merano', 'granularity': 'monthly', 'timestamp': '2015080100', 'access': 'all-access', 'agent': 'user', 'views': 35}]})

我要做的是通过选择性地构建行来解析数据。如果有人能帮我弄清楚如何从这些数据(例如)中获得文章、时间戳和视图的所有数据点,我认为我将是最棒的。我甚至可以肯定,如果这个东西是JSON还是Python (print(type()返回"class 'attrdict.dictionary.AttrDict'“。任何帮助都将不胜感激。谢谢!**

EN

回答 3

Stack Overflow用户

发布于 2019-12-16 02:53:58

我猜您是在使用JSON库的load()(或load())函数吧?

load()/loads()都将JavaScript对象转换为JavaScript中的嵌套字典。这就是为什么印刷这么乱。

我并不完全理解您的问题是什么,但是您应该能够通过将load()/loads()作为一个字典来与它进行交互。这里有一个指向JSON库文档的链接(我猜您已经看到了)[1]

如果你有什么问题请告诉我!

票数 0
EN

Stack Overflow用户

发布于 2019-12-16 20:59:48

所以在我看来,views是一个嵌套的字典。该类型表示AttrDict,虽然我不知道这是什么,但我猜它的接口类似于Python的内置字典。如果您使用views["items"],应该会给出一个字典列表,这些字典都是{'project': 'en.wikipedia', 'article': 'Samuel_John_Carter', 'granularity': 'monthly', 'timestamp': '2019110100', 'access': 'all-access', 'agent': 'user', 'views': 330}的通用形式。如果你对如何解释感到困惑,请看我对另一个答案的评论。现在,您将注意到这个列表中的许多字典中的每一个都有一个'views'键和一个'timestamp'键。你必须决定你想要哪个映射值(即你想要哪本字典)--我不知道你感兴趣的是哪一本。如果需要所有这些字段,那么迭代这个列表,对于每个元素,i使用i["views"]i["timestamp"]访问这些字段。这有用吗?

票数 0
EN

Stack Overflow用户

发布于 2019-12-17 21:05:30

谢谢你的建议!

我决定尝试一些不同的东西,直接去维基百科Rest。

贝娄是我使用的代码:

代码语言:javascript
复制
import requests
from csv import reader

opened_file = open("file to read")
read_file = reader(opened_file)
unique_pages = list(read_file)


write_file = open("file to write results", "w")


for row in unique_pages:    
    #first load in variables from file
    lang = row[0]
    page_title = row[1] 
    url = row[2]
    ulan_id = row[3]
    ulan_name = row[4]
    wsearch = row[0]+'.wikipedia'
    #next build URL
    pvurl = 'https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/'+lang+'.wikipedia/all-access/user/'+page_title+'/monthly/20150701/20191201?'
    #next make request
    response = requests.get(pvurl)
    response_json  = response.json()
    #finally print results

    try:
        for i in response_json['items']: 
            _pvarticle = i['article']
            _pvproject = i['project']
            _pvtimestamp = i['timestamp']
            _views = i['views']
            print(_pvarticle,'|',_pvproject,'|',_pvtimestamp,'|',_views,'|',ulan_id,'|',ulan_name,'|',url,'|',lang)
            built_string = f"{_pvarticle}|{_pvproject}|{_pvtimestamp}|{_views}|{ulan_id}|{ulan_name}|{url}\n"
            write_file.write(built_string)
#            time.sleep(0.005)
    except:
            print(page_title,'|',lang+".wikipedia",'|','No Data','|','No Views','|',ulan_id,'|',ulan_name,'|',url,'|',lang)
            built_string = f"{page_title}|{lang}.wikipedia|No Data|No Data|{ulan_id}|{ulan_name}|{url}\n"
            write_file.write(built_string)

所以我只是在学Python。如果有人有改进代码的建议,请告诉我!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59349931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档