【问题标题】:Python Dictionary - RequestsPython 字典 - 请求
【发布时间】:2020-05-17 01:00:10
【问题描述】:

我正在尝试从返回 XML 的 API 中获取一些信息。我正在遍历 Root,然后是 Children,但是它只是拾取第一个元素。这是一些示例 xml 数据:

<?xml version="1.0" encoding="ISO-8859-1"?>
<result created="2020-06-14T12:54:08-05:00" host="www.systemmonitor.us" status="OK">
<items>
    <site>
        <siteid>144855</siteid>
        <name>
            <![CDATA[NC 99 S]]>
        </name>
        <connection_ok>1</connection_ok>
        <creation_date/>
        <primary_router/>
        <secondary_router/>
    </site>
    <site>
        <siteid>148578</siteid>
        <name>
            <![CDATA[Trial Accounts]]>
        </name>
        <connection_ok>1</connection_ok>
        <creation_date>2013-09-28</creation_date>
        <primary_router/>
        <secondary_router/>
    </site>
    <site>
        <siteid>166088</siteid>
        <name>
            <![CDATA[NEW ACCOUNTS]]>
        </name>
        <connection_ok>1</connection_ok>
        <creation_date>2014-01-08</creation_date>
        <primary_router/>
        <secondary_router/>
    </site>
    <site>
        <siteid>606559</siteid>
        <name>
            <![CDATA[Enhanced]]>
        </name>
        <connection_ok>1</connection_ok>
        <creation_date>2019-09-14</creation_date>
        <primary_router/>
        <secondary_router/>
    </site>
</items>

我的代码由这个组成,

r = requests.get('https://www.systemmonitor.us//api/? 
apikey=*******c&service=list_sites&clientid=%s' % rmmid)
root = ET.fromstring(r.content)
print(root)
sitelist = {}
for child in root.findall('items'):
    for sites in child.findall('site'):
        print(sites)
        site_info = {}
        name = sites.find("name").text
        guid = sites.find("siteid").text

        sitelist[guid] = site_info
        site_info['id'] = guid
        site_info['name'] = name

        for key, value in sitelist.items():
            print(key, value)

        return redirect('/computers/home')

return redirect('/computers/home')

我得到了第一个元素,但它似乎没有遍历其他元素。我尝试过使用 .iter 和不同的 .findall 调用。我在这方面缺少什么?

【问题讨论】:

  • 请提供最低要求的代码,dict sub...?
  • 这是操作中的所有内容,除了来自 stripe 的代码,它刚刚进入 var invoices。
  • 订阅工作正常,发票甚至在拉,他们只是没有填写 invoice_list 字典。
  • 所有订阅和发票都是条带查询
  • 我已更新我的问题以显示所有代码。示例响应和请求它的代码。

标签: python xml api python-requests


【解决方案1】:

在你的 for 循环体中有一个 return 语句会阻止它循环。 return 语句将导致控件离开它所在的任何函数。

【讨论】:

  • 非常感谢,我想我想多了。我一取下它,它就像一个魅力。
【解决方案2】:

当您的程序在函数中包含return(或函数内部的循环)时,它将跳出该函数并将结果(return 关键字后面的表达式的值)“返回”给调用者。 return 语句之后的语句不被执行。如果 return 语句没有任何表达式,则返回特殊值 None。

以下代码将帮助您更好地理解。

>>> def explain():
    for i in range(10):
        return(i)


>>> explain()
0
>>> def explain_():
    for i in range(10):
        print(i)
    return "Done"

>>> explain_()
0
1
2
3
4
5
6
7
8
9
'Done'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2021-06-10
    • 2019-08-13
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多