Проблемы с чтением данных MARC с использованием MARCReader() и 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)
Я посмотрел онлайн, но не смог найти ответ на свою проблему. Что означает эта ошибка и как я могу исправить ее? Заранее спасибо.
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()
Замечания:
Если вы по-прежнему получаете исключение Unicode, вы можете установить to_unicode=False и пропустить force_utf8=True.
Также, пожалуйста, проверьте, закодирован ли ваш файл dump.mrc в UTF-8 или нет. Попробуйте: $ chardet dump.mrc