0

我正在运行一个脚本来从 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 的新手,我认为它的工作并不安静。

插入事件.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

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

4

1 回答 1

2

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

def foo(a, b):
    pass

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

如果您想保存具有键/值关联的内容,我建议您使用 a dict(或者在您的情况下可能是 a listof dicts)

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]将抛出一个IndexErrorifi['trailers']是一个空列表 ( [])。i['trailers']您可以使用 just来检查某些内容if i['trailers']:

于 2018-12-26T14:56:38.987 回答