2014-05-14 426 views
0

我有一个包含读取数据

[{ 
     'address': 'Bramalea, L6T 0E2' 
     'type': 'home' 
     }, { 
     'address': 'A, 46 Peel Drive, ASDF23' 
     'type': 'office' 
     } 
}] 

我只是想读地址型办公 S3文件,任何机构可以建议我怎么可以遍历这个数据?因为它只是一个字符串 到目前为止,我能够读取该数据

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) 
+1

不需要抱歉提问。但是,你应该真实地展示你到目前为止已经尝试过的内容,以便我们知道你已经提出了一些想法。这就是说,我会建议阅读关于['json'](https://docs.python.org/3/library/json.html)模块。 – ubomb

+1

这是JSON数据吗?它看起来像。你可以使用'json'库来读入这个文件,然后按你想要的进行过滤。 – CoryKramer

+0

@ubomb问题已更新 – user3638022

回答

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 
0

我就在我到您的文章评论不正确。请勿使用json模块解析此文件,因为这不是有效的json。有效的json只在其字符串周围使用双引号 - 而不是单引号。相反,这看起来像基本的python文字结构(读取:基本的python数据类型)。有一种方法可以安全地做到这一点与潜在的不受信任的来源。 ast.literal_eval应该可以在这里帮助你。