2

因此,我正在尝试为我正在从事的学校项目自学 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)

我在网上查看过,但找不到我的问题的答案。这个错误是什么意思,我该如何修复它?提前致谢。

4

1 回答 1

1

您可以将 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() 

笔记:

  1. 如果仍然得到 unicode 异常,可以设置 to_unicode=False 并跳过 force_utf8=True。

  2. 另请检查您的 dump.mrc 文件是否编码为 UTF-8。试试:$ chardet dump.mrc

于 2018-01-04T09:37:07.570 回答