从文件中读取数据作为列表

时间:2014-05-14 18:42:32

标签: python string amazon-s3 boto

我在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)

2 个答案:

答案 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应该可以在这里帮助你。