所以我正在尝试为我正在从事的一个学校项目自学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