Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 11, 2013 15:30:38

Ilyxa
Зарегистрирован: 2013-04-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

open()

Здравствуйте, помогите новичку, Py 3.3 32x win7 64x

f = open('Connect (2).txt', mode = 'rt')
x = [line.rstrip() for line in f]
f.close
print(x)
#в результате получаю: ['яю[\x00o\x00l\x00e\x00d\x00b\x00]\x00']

как мне получить строку в нормальном виде - “oledb”?

Отредактировано Ilyxa (Апрель 11, 2013 17:57:38)

Офлайн

#2 Апрель 11, 2013 16:20:03

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

open()

Попробуй

print(str(x))

Я бы посоветовал воспользоваться этим кодом:

for line in open('Connect (2).txt'): # Использование итератора: лучший способ 
    print(line, end='')           # чтения текста

пример представляет наиболее предпочтительный способ ра-
боты с текстовыми файлами. Он не только проще, но и способен работать
с файлами любого размера, так как не загружает файл целиком в па-
мять. Версия на базе итератора может оказаться самой быстрой, но пока
остается неясным вопрос, связанный с производительностью операций
ввода-вывода в Python3.0.
(с) Лутц М.



————————–
Истина где-то рядом

Отредактировано alexbadaloff (Апрель 11, 2013 16:32:52)

Офлайн

#3 Апрель 11, 2013 16:36:27

Ilyxa
Зарегистрирован: 2013-04-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

open()

Спасибо, но результат тот же…

Офлайн

#4 Апрель 11, 2013 16:49:28

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

open()

Я думаю это с кодировками траблы.
Попробуй

print(line.encode('utf-8'), end='')
Можно еще файл попробовать пересохранить в utf-8



————————–
Истина где-то рядом

Офлайн

#5 Апрель 11, 2013 17:57:14

Ilyxa
Зарегистрирован: 2013-04-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

open()

пробовал уже, не помогает.. (файл пересохранил)
и так пробовал open('Connect.txt'.encode('utf-8'), ‘tr’)
может здесь дело в том, что py 32, а win 64?

Отредактировано Ilyxa (Апрель 11, 2013 17:59:03)

Офлайн

#6 Апрель 11, 2013 18:22:03

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

open()

>и так пробовал open('Connect.txt'.encode('utf-8'), ‘tr’)
зачем гадать, не проще ли глянуть в доки
http://docs.python.org/3/library/functions.html?highlight=open#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 encoding supported by Python can be used. See the codecs module for the list of supported encodings.

Офлайн

#7 Апрель 11, 2013 19:33:29

Ilyxa
Зарегистрирован: 2013-04-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

open()

и что я должен сделать? я не понимаю

Отредактировано Ilyxa (Апрель 11, 2013 19:33:58)

Офлайн

#8 Апрель 11, 2013 19:35:07

Ilyxa
Зарегистрирован: 2013-04-11
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

open()

в py 2.7
f = open('Connect.txt','rn') тоже самое
вот файл можете сами попробовать…

это … файл, который … не текстовый, все работает в …

Отредактировано Ilyxa (Апрель 11, 2013 20:01:12)

Прикреплённый файлы:
attachment Connect.txt (380 байт)

Офлайн

#9 Апрель 11, 2013 21:11:49

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

open()

в какой кодировке у тебя файл?

Офлайн

#10 Апрель 11, 2013 22:49:27

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

open()

Ну как и предполагалось. Твой файл был в кодировке UTF-16 LE with BOM.
Вот твой файл в UTF-8, который обрабатывается нормально:



————————–
Истина где-то рядом

Отредактировано alexbadaloff (Апрель 11, 2013 22:53:09)

Прикреплённый файлы:
attachment Connect.txt (189 байт)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version