【问题标题】:Extract a value from s3 bucket meta file从 s3 存储桶元文件中提取值
【发布时间】:2020-04-09 17:58:22
【问题描述】:

我使用obj.get()['Body'].read() 和 这返回了

b'[{ "version": "v1", "timeDelta": 0.0, "artist": "", "title": "text="Spot Block End" amgTrackId="9876543"", "timestamp": "1586453290376" }]'

我想提取时间戳键的值。

我在我的 s3 存储桶中存储了一些 .meta 文件,我需要检查我的每个 .meta 文件是否有时间戳

【问题讨论】:

    标签: python-3.x amazon-web-services amazon-s3 bucket


    【解决方案1】:

    这不是 json 格式。看来您需要转义标题键中的 "

    "title": "text=\"Spot Block End\" amgTrackId=\"9876543\""
    

    像这样。

    也许你可以尝试使用正则表达式来为你做这件事。

    编辑:

    import json
    import re
    
    input = b'[{ "version": "v1", "timeDelta": 0.0, "artist": "", "title": "text="Spot Block End" amgTrackId="9876543"", "timestamp": "1586453290376" }]'
    input = input.decode('utf-8')
    
    match = re.findall('(?<=\"title\": \").*\"(?=\")',input)[0]
    escaped_match = json.dumps(match)
    input = input.replace(match,escaped_match[1:-1])
    
    print(json.loads(input))
    

    看看这段代码,有点难看,但确实有效。

    希望对你有帮助!

    【讨论】:

    • 我刚刚得知obj.get()['Body'].read() 将返回字节。因此,我们需要添加decode('utf-8') 才能提取。 obj.get()['Body'].read().decode('utf-8')
    • 已编辑,看看。 @努努
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多