使用 MARCReader() 和 pymarc 读取 MARC 数据时遇到问题
Trouble reading MARC data using MARCReader() and pymarc
所以我正在尝试自学 python 和 pymarc,以用于我正在从事的学校项目。我有一个示例 marc 文件,我正在尝试使用这个简单的代码来读取它:
from pymarc import *
reader = MARCReader(open('dump.mrc', 'rb'), to_unicode=True)
for record in reader:
print(record)
for 循环只是打印出每条记录以确保我得到正确的数据。唯一的问题是我收到此错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)
我在网上看过,但找不到我的问题的答案。这个错误是什么意思,我该如何修复它?提前致谢。
您可以设置python环境以支持UTF-8并获取字典形式的记录。
尝试:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from pymarc import *
reader = MARCReader(open('dump.mrc', 'rb'), to_unicode=True, force_utf8=True)
for record in reader:
print record.as_dict()
注:
如果还是出现unicode异常,可以设置to_unicode=False,跳过force_utf8=True。
另外请检查您的 dump.mrc 文件是否编码为 UTF-8。尝试:
$ chardet dump.mrc
所以我正在尝试自学 python 和 pymarc,以用于我正在从事的学校项目。我有一个示例 marc 文件,我正在尝试使用这个简单的代码来读取它:
from pymarc import *
reader = MARCReader(open('dump.mrc', 'rb'), to_unicode=True)
for record in reader:
print(record)
for 循环只是打印出每条记录以确保我得到正确的数据。唯一的问题是我收到此错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)
我在网上看过,但找不到我的问题的答案。这个错误是什么意思,我该如何修复它?提前致谢。
您可以设置python环境以支持UTF-8并获取字典形式的记录。
尝试:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from pymarc import *
reader = MARCReader(open('dump.mrc', 'rb'), to_unicode=True, force_utf8=True)
for record in reader:
print record.as_dict()
注:
如果还是出现unicode异常,可以设置to_unicode=False,跳过force_utf8=True。
另外请检查您的 dump.mrc 文件是否编码为 UTF-8。尝试: $ chardet dump.mrc