Создайте файл CSV с двумя списками, включающими UTF-8 в python - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть 2 списка, один из которых включает персидские слова, а другой включает цифры

Headers = ['word', 'value']
list1 = ['سلام', 'خوبی']
list2 = [1, 2]

Я хочу сделать CSV-файл следующим образом

value          word
1              سلام
2             خوبی

это мой код , но это не работает на UFT-8 символов

df = pd.DataFrame({'words': list1, 'class': list2})
    df.to_csv('milad.csv', encoding='utf-8', index=False)

, и это результат

word              value
همراه او     1
همراه او     2

как мне это сделать

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

Я думаю, что проблема может быть в программе, которую вы используете для открытия результирующего файла .csv, а не в вашем коде python. Какую программу вы используете?

Когда я выполнил ваш код и открыл полученный файл в Блокноте, символы отображаются правильно,

words,class


1,سلام
2,خوبی

, однако, когда я открываю его в Excel, возникает та же проблема у вас было.

word              value
همراه او     1
همراه او     2

Возможно, вам придется сообщить программному обеспечению, которое вы используете, чтобы открыть файл csv для использования UTF-8. например, https://smallbusiness.chron.com/open-utf8-excel-63726.html

0 голосов
/ 24 апреля 2020

Вам нужно закодировать строку в байтах перед записью.

for x in enumerate(list1):
    list1[x[0]] = x[1].encode('utf-8')

Это изменит ее на:

[b'\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85', b'\xd8\xae\xd9\x88\xd8\xa8\xdb\x8c']

Вы можете декодировать это позже с помощью decode('utf-8')

После записи

d = open('test.csv','r').read()

Результат:

,word,value

0,b'\xd8\xb3\xd9\x84\xd8\xa7\xd9\x85',b'\xd8\xae\xd9\x88\xd8\xa8\xdb\x8c'

1,1,2

Который вы можете затем декодировать и читать в pandas, надеюсь, это помогло.

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