我在s3上有包含
的文件[{
'address': 'Bramalea, L6T 0E2'
'type': 'home'
}, {
'address': 'A, 46 Peel Drive, ASDF23'
'type': 'office'
}
}]
我只是想阅读类型 办公室的地址,任何机构都可以建议我如何迭代这些数据?因为它只是一个字符串 到目前为止,我能够阅读这些数据
conn = S3Connection(AWS_KEY, AWS_SECRET)
bucket = conn.get_bucket(BUCKET_NAME)
for key in bucket.list(DIR_Name):
data = key.get_contents_as_string()
print data
我也尝试使用json模块读取数据
data = key.get_contents_as_string()
print json.loads(data)
提升
print json.loads(data)
File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 2 column 5 (char 8)
答案 0 :(得分:0)
没有必要使用其他模块。由于这是一个词典列表,因此很容易只保留'type'
'office'
的元素:
my_list = [{
'address': 'aa, 46 Peel Centre Drive, A342',
'type': 'home',
}, {
'address': 'a, 46 Peel Centre Drive, AS32',
'type': 'office',
}, {
'address': 'b, 46 Peel Centre Drive, SD22',
'type': 'home',
}, {
'address': 'c, 46 Peel Centre Drive, SD22',
'type': 'home',
}, {
'address': 'd, 46 Peel Centre Drive, SSD222',
'type': 'office',
}]
addresses = [elem['address'] for elem in my_list if elem['type'] == 'office']
print addresses
答案 1 :(得分:0)
我对你的帖子的评论不正确。不要使用json
模块来解析此文件,因为这不是有效的json。有效的json只在其字符串周围使用双引号 - 而不是单引号。相反,这看起来像基本的python文字结构(阅读:基本的python数据类型)。有一种方法可以使用可能不受信任的来源安全地执行此操作。 ast.literal_eval
应该可以在这里帮助你。