Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 19, 2016 17:42:59

podolskiy
Зарегистрирован: 2016-09-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка python 3 utf-8 в idle

Добрый день! Сильно не пинайте, я только начинаю
Есть csv файл с кодировкой utf-8. Делаю

 # -*- coding: utf-8 -*-
import csv
reader = csv.reader(open(r"F:\py\test1.csv"))
for row in reader:
    print (row)
    print ("Привет")

Вывод:


Почему так? На сколько я понял с гугла, в 3.5 уже по умолчанию используется utf-8, то есть вообще первую строку можно не использовать, и так должно все работать. А не работает даже с ней.
Если кодировку перевести в ANSI, то все нормально отрабатывает
Спасибо!

Отредактировано podolskiy (Сен. 19, 2016 17:45:11)

Офлайн

#2 Сен. 19, 2016 18:52:28

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Кодировка python 3 utf-8 в idle

вы путаете кодировку исходного кода программы с кодировкой файла который вы открываете. ДЛя корректности нужно открыть файл и указать кодировку в которой кодирован конкретно этот файл



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Сен. 19, 2016 21:18:56

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Кодировка python 3 utf-8 в idle

 reader = csv.reader(open(r"F:\py\test1.csv",encoding="utf-8"))



Офлайн

#4 Сен. 19, 2016 22:07:20

podolskiy
Зарегистрирован: 2016-09-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка python 3 utf-8 в idle

Да, так работает, спасибо.
И еще уточнить, в оф. документации пишут, что файлы по умолчанию открываются в utf-8

Normally, files are opened in text mode, that means, you read and write strings from and to the file, which are encoded in a specific encoding (the default being UTF-8).

Почему тогда нужно указывать кодировку utf-8 при открытии?

Отредактировано podolskiy (Сен. 19, 2016 22:09:07)

Офлайн

#5 Сен. 19, 2016 22:25:59

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Кодировка python 3 utf-8 в idle

podolskiy
Почему тогда нужно указывать кодировку utf-8 при открытии?
Windows?



Офлайн

#6 Сен. 20, 2016 02:16:43

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9998
Репутация: +  857  -
Профиль   Отправить e-mail  

Кодировка python 3 utf-8 в idle

podolskiy
И еще уточнить, в оф. документации пишут, что файлы по умолчанию открываются в utf-8
python.org. open()
encoding is the name of the encoding used to decode or encode the file. This should only be used in text mode. The default encoding is platform dependent (whatever locale.getpreferredencoding() returns), but any text encoding supported by Python can be used. See the codecs module for the list of supported encodings.

podolskiy
Почему тогда нужно указывать кодировку utf-8 при открытии?
Документация, которую ты читаешь, сомнительная, либо ты просто криво её читаешь. Кодировка utf-8 по умолчанию ставится для объявления кодировки исходника в третьем питоне. И ещё кодировка utf-8 по умолчанию используется при кодировании строки в классе str. Но ты, скорее всего, перепутал кодировку исходника с кодировкой открытого через open() файла.



Отредактировано py.user.next (Сен. 20, 2016 02:22:44)

Офлайн

#7 Сен. 20, 2016 10:56:30

podolskiy
Зарегистрирован: 2016-09-19
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка python 3 utf-8 в idle

doza_and
Да, Windows
 locale.getpreferredencoding()
выводит cp1251
В этом причина?
py.user.next
Видимо криво читаю, так как документация с оф. сайта

Отредактировано podolskiy (Сен. 20, 2016 11:04:00)

Офлайн

#8 Сен. 20, 2016 13:46:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9998
Репутация: +  857  -
Профиль   Отправить e-mail  

Кодировка python 3 utf-8 в idle

podolskiy
Видимо криво читаю, так как документация с оф. сайта
podolskiy
И еще уточнить, в оф. документации пишут, что файлы по умолчанию открываются в utf-8
Где такое пишут? Нигде такое не пишут. На каждой платформе своя кодировка, которая может быть utf-8, а может не быть utf-8.



Отредактировано py.user.next (Сен. 20, 2016 13:47:52)

Офлайн

#9 Сен. 21, 2016 09:14:18

avinean
Зарегистрирован: 2016-09-21
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка python 3 utf-8 в idle

reader = csv.reader(open(r“F:\py\test1.csv”,encoding=“utf-8”))


__________________________________________________
http://goit.com.ua

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version