2016-03-04 38 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