2014-02-14 76 views
0

我試圖解析從國會圖書館下載的MARC文件。我已經成功下載使用PyZ3950記錄,但是當我嘗試使用PyMarc解析文件,我得到以下錯誤:PyMarc無效的文字錯誤

Traceback (most recent call last): 
    File "test.py", line 13, in <module> 
    for record in reader: 
    File "build/bdist.macosx-10.9-intel/egg/pymarc/reader.py", line 83, in next 
ValueError: invalid literal for int() with base 10: '<PyZ3' 

這裏是我的全碼:

from PyZ3950 import zoom, zmarc 
from pymarc import MARCReader 

conn = zoom.Connection('z3950.loc.gov', 7090) 
conn.databaseName = 'VOYAGER' 
conn.preferredRecordSyntax = 'USMARC' 

query = zoom.Query('CCL', 'ti="1066 and all that"') 

res = conn.search(query) 

reader = MARCReader(str(res)) 
for record in reader: 
     print record.title() 

conn.close() 
+0

你能發佈完整的回溯,不僅錯誤消息?我不知道這個錯誤消息如何與代碼相關。 – User

+0

我添加了完整的回溯。 – user2671196

+0

'reader = MARCReader(res)'?你爲什麼把它轉換成字符串? – User

回答

1

你聲明:

res = conn.search(query) 

回報ResultSet,據此來http://www.panix.com/~asl2/software/PyZ3950/zoom.html

resultSet每個記錄rr.data

數據所以,你必須與每個r.data或與他們所有的連接喂MARCReader。

這將工作:

from PyZ3950 import zoom, zmarc 
from pymarc import MARCReader 
conn = zoom.Connection('z3950.loc.gov', 7090) 
conn.databaseName = 'VOYAGER' 
conn.preferredRecordSyntax = 'USMARC' 
query = zoom.Query('CCL', 'ti="1066 and all that"') 
res = conn.search(query) 
marc = '' 
for r in res: 
    marc = marc + r.data 
reader = MARCReader(marc) 
for record in reader: 
     print record.title() 
conn.close()