ошибка с юникодом при попытке запуска скрипта python - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь выполнить скрипт на python и получаю сообщение об ошибке, в котором говорится, что «charmap» не может декодировать байт, потому что символ отображается на неопределенный.Я предполагаю, что это как-то связано с юникодом, однако я не настолько опытен, чтобы решить эту проблему.

def load_imdb_sentiment_analysis_dataset(data_path = 
"C:/Users/name/Desktop", seed=123):

imdb_data_path = os.path.join(data_path, 'aclImdb')

# Load the training data
train_texts = []
train_labels = []
for category in ['pos', 'neg']:
    train_path = os.path.join(imdb_data_path, 'train', category)
    for fname in sorted(os.listdir(train_path)):
        if fname.endswith('.txt'):
            with open(os.path.join(train_path, fname)) as f:
                train_texts.append(f.read())
            train_labels.append(0 if category == 'neg' else 1)

# Load the validation data.
test_texts = []
test_labels = []
for category in ['pos', 'neg']:
    test_path = os.path.join(imdb_data_path, 'test', category)
    for fname in sorted(os.listdir(test_path)):
        if fname.endswith('.txt'):
            with open(os.path.join(test_path, fname)) as f:
                test_texts.append(f.read())
            test_labels.append(0 if category == 'neg' else 1)

# Shuffle the training data and labels.
random.seed(seed)
random.shuffle(train_texts)
random.seed(seed)
random.shuffle(train_labels)

return ((train_texts, np.array(train_labels)),
        (test_texts, np.array(test_labels)))

Я получаю следующую ошибку: UnicodeDecodeError: кодек 'charmap' не может декодировать байт 0xaa в позиции489: персонаж отображается на

1 Ответ

0 голосов
/ 22 января 2019

Вам необходимо выяснить кодировку файла, который вы пытаетесь открыть. И использовать его в открытой функции.

Например, для utf8: open (имя файла, кодировка = 'utf8')

так что вы можете изменить от with open(os.path.join(train_path, fname)) в with open(os.path.join(train_path, fname), encoding='utf8')

Если вас не интересуют символы, которые не могут быть открыты, вы можете просто пропустить их (будьте осторожны при таких подходах): open (имя файла, ошибки = 'игнорировать')

with open(os.path.join(train_path, fname), errors='ignore')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...