2016-03-04 78 views
1

我正在使用pymarc庫。我的問題是,如何處理一個變量的多個實例,要麼建立一個列表,要麼反覆遍歷它們?python:如何通過變量的多個實例創建/迭代列表

可以通過將字段編號添加到record變量來訪問MARC字段。例如,我在一個記錄中有三個856字段的實例,可以作爲record['856']訪問。但只有一審通過。

指定變量record['856'][0]record['856'][1]等,不起作用。

我曾嘗試創建一個列表,該列表如下所示,但沒有奏效

from pymarc import MARCReader 

with open('file.mrc', 'rb') as fh: 
    reader = MARCReader(fh) 
    for record in reader: 
      """get all 856 fields -- delete unwanted 856 fields 
      =856 40$uhttp://url1.org 
      =856 40$uhttp://url2.org 
      =856 40$uhttp://url3.org 
      """ 
       eight56to956s = [] 
       eight56to956 = record['856'] 
       eight56to956s.append(eight56to956) 
       print eight56to956s 

我知道我會如何在PHP這樣做,但我沒有得到我的頭周圍Python語法甚至在網上搜索正確的東西。

回答

1

你需要一本字典,在這裏可以設置856的鍵,然後要進行標記,以856

your_856 = {856: ['=856 40$uhttp://url1.org', '=856 40$uhttp://url2.org', '=856 40$uhttp://url3.org']} 

您現在可以使用index訪問像值值的列表,這裏是爲例

print(your_856[856][1]) 

此輸出

=856 40$uhttp://url2.org 
+0

謝謝!例如,有三個網址,但該號碼可能會有所不同,且值不知道。如果我想構建字段的所有實例字典,我如何捕獲未知值?我試着'a = {} key =「856」 a.setdefault(key,[]) a [key] .append('[856'])'但這不起作用 – mattrweaver

+0

對於其他部分我的問題,得到所有的領域:'在record.get_fields('856')的字段: print field' – mattrweaver