Кодирование, декодирование символов пиньинь в Python 3,7 - PullRequest
0 голосов
/ 02 мая 2020

У меня проблемы с расшифровкой символов пиньинь из файла Excel.

Структура этого файла выглядит следующим образом:

enter image description here

[...]

и я хочу сохранить значения каждого столбца в отдельной переменной, выполнив это следующим образом: (для пиньинь мне нужно передать 'ignore' аргумент)

df = pd.read_excel("static\\voc1.xlsx")

#English doesn't actually need en-/decoding
en = str(df['English'][:3]).encode('utf-8').decode('cp1252')
zh = str(df['Chinese'][:3]).encode('utf-8').decode('cp1252')
pinyin = str(df['Pinyin'][:3]).encode('utf-8').decode('cp1252', 'ignore')

print(zh, en, pinyin)

, что приводит к следующему при выполнении:

0     我
1    我们
2     你
Name: Chinese, dtype: object
0     I, me
1    we, us
2       you
Name: English, dtype: object
0       wǒ
1    wǒmen
2       n�
Name: Pinyin, dtype: object

Как вы можете видеть, это точно работает для китайских символов и английского sh, но для пиньинь это либо показывая этот «алмазный вопросительный знак» для некоторых символов, либо выбрасывая ошибку, если я не передам аргумент errors :

df = pd.read_excel("static\\voc1.xlsx")

#English doesn't actually need en-/decoding
en = str(df['English'][:3]).encode('utf-8').decode('cp1252')
zh = str(df['Chinese'][:3]).encode('utf-8').decode('cp1252')
pinyin = str(df['Pinyin'][:3]).encode('utf-8').decode('cp1252')

print(zh, en, pinyin)
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 34: character maps to <undefined>

Если вы хотите воспроизвести себя: I Использую этот файл здесь: https://www.mandarinzone.com/wp-content/uploads/2019/04/HSK1-Vocabulary-List.xlsx

на 64-битной Win10 с кодом Visual Studio

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 04 мая 2020

Наконец-то разобрался с проблемой. Я запускал его через расширение VS Code Runner, которое вызвало ошибку. Я предполагаю, что возможно настроить его так, чтобы он работал, но на данный момент я просто использую стандартный терминал в VS Code или запускаю его напрямую через CLI.

...