如何检查是否存在某些东西,然后在数组中创建并将其保存

时间:2018-12-26 14:50:43

标签: python

我正在运行一个脚本来从URL获取信息,然后创建一个Json文件。这样,我将仔细阅读信息,保存所需信息,然后将其插入数据库。 但是,我对此信息的一部分有疑问。

URL中的信息,保存为JSON

"images": [
        {
            "type": "PosterPortrait", 
            "url": "https://ingresso-a.akamaihd.net/img/cinema/cartaz/22455-cartaz.jpg"
        }, 
        {
            "type": "PosterHorizontal", 
            "url": "https://ingresso-a.akamaihd.net/img/cinema/cartaz/22455-destaque.jpg"
        }
    ], 
    "trailers": []

这是我必须要做的一部分,

  • 检查拖车内是否有东西
  • 将其保存在数组中,关于其“类型”和“ URL”
  • 将它们保存在我的数据库中

我编写了一个代码来做到这一点,问题是,我是python的新手,我不认为它可以正常工作。

insert-events.py

if(i['trailers'][0]):
        a = array.arr(
            array.arr('url' = i['images'][0]['url'], 'type' = i['images'][0]['type']),
            array.arr('url' = i['images'][1]['url'], 'type' = i['images'][1]['type']),
            array.arr('url' = i['trailers'][0]['url'], 'type' = Trailer),
            array.arr('url' = i['trailers'][1]['url'], 'type' = Trailer),
        )
    else:
        a = array.arr(
            array.arr('url' = i['images'][0]['url'], 'type' = i['images'][0]['type']),
            array.arr('url' = i['images'][1]['url'], 'type' = i['images'][1]['type']),
        )

这是代码的一部分,可从JSON获取信息,然后将其保存为数组数组。

错误

File "insert-events.py", line 46
array.arr('url' = i['images'][0]['url'], 'type' = i['images'][0]['type']),
SyntaxError: keyword can't be an expression

那么,我做错了什么?这是数组结构还是当我尝试保存信息时? 任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

您看到的错误是因为您似乎在尝试使用关键字参数来调用函数/类,但不使用关键字,而是使用字符串。

def foo(a, b):
    pass

foo(a=1, b=2) # Correct
foo('a'=1, 'b'=2) # Incorrect

如果您想保存具有键/值关联的内容,我建议您使用dict(或者在您的情况下,使用dict中的list

if(i['trailers'][0]):
    a = [
        {'url': i['images'][0]['url'], 'type': i['images'][0]['type']},
        {'url': i['images'][1]['url'], 'type': i['images'][1]['type']},
        ] # etc.
else:
    a = [
        {'url': i['images'][0]['url'], 'type': i['images'][0]['type']},
        {'url': i['images'][1]['url'], 'type': i['images'][1]['type']},
        ]

最后,作为半不相关的注释,如果i['trailers'][0]为空列表(IndexError),则检查i['trailers']会抛出[]。您可以仅使用i['trailers']if i['trailers']:中进行检查。