0

米国議会図書館からダウンロードした MARC ファイルを解析しようとしています。PyZ3950 を使用してレコードを正常にダウンロードしましたが、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()
4

1 に答える 1

1

あなたの声明:

res = conn.search(query)

を返してResultSet、それに応じてhttp://www.panix.com/~asl2/software/PyZ3950/zoom.html

の各レコードrresultSetはデータがありますr.data

そのため、それぞれを MARCReader にフィードするr.dataか、すべてを連結してフィードする必要があります。

これはうまくいきます:

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()
于 2014-03-18T19:24:11.347 に答える