簡體   English   中英

從文件中讀取數據作為列表

[英]reading data from file as list

我在s3上包含的文件

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

我只想閱讀具有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)

無需使用其他模塊。 由於這是詞典的列表,因此很容易僅保留具有'office' 'type'元素:

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

我對您的帖子的評論不正確。 不要使用json模塊來解析此文件,因為這不是有效的json。 有效json僅在其字符串周圍使用雙引號-而不是單引號。 相反,這看起來像基本的python文字結構(閱讀:基本的python數據類型)。 有一種方法可以對可能不受信任的來源安全地執行此操作。 ast.literal_eval應該可以在這里為您提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM