Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 22, 2009 13:35:59

xs13
От:
Зарегистрирован: 2008-09-06
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой в текстовом файле

Делаю так:

file=codecs.open( "data.txt", "r", "cp1251" )  # открываем файл data.txt на чтение
u = file.readlines() # считываем строками в переменную u
for i in u[0:]:
i[2:] = [] # оставляем только 1 и 2 элементы каждой строки, отсекаем все, что дальше
list.insert(0,i) # Отображаем содержимое переменной в окне списка
В итоге имеем ошибку:
'unicode' object doesn't support item assignment

как изменить код, чтобы в окне отображались первые два слова из каждой строки? Что я делаю не правильно?



Отредактировано (Июнь 22, 2009 13:37:32)

Офлайн

#2 Июнь 22, 2009 15:42:57

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой в текстовом файле

1. i - это не первые 2 слова, а первые 2 символа,
2. i - это юникод строка, а строки в питоне обьекты неизменяемые, про что тебе интерпритатор и говорит в ошибке,
3. list.insert(0,i) - использовать зарезервированные слова в качестве имён переменных плохая практика.



Отредактировано (Июнь 22, 2009 15:43:43)

Офлайн

#3 Июнь 22, 2009 16:00:15

xs13
От:
Зарегистрирован: 2008-09-06
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой в текстовом файле

Viper
2. i - это юникод строка, а строки в питоне обьекты неизменяемые, про что тебе интерпритатор и говорит в ошибке,
хорошо, это я понимаю
как мне из строки сделать список слов?



Офлайн

#4 Июнь 22, 2009 17:08:05

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой в текстовом файле

Читать документацию: 6.6.1. String Methods



Отредактировано (Июнь 22, 2009 17:09:03)

Офлайн

#5 Июнь 23, 2009 03:39:26

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Проблемы с кодировкой в текстовом файле

lst = [x.strip().split()[:2] for x in file("data.txt", "rb")]



Офлайн

#6 Июнь 23, 2009 12:19:53

xs13
От:
Зарегистрирован: 2008-09-06
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой в текстовом файле

pyuser
lst = [x.strip().split()[:2] for x in file("data.txt", "rb")]
и получается все точно также как в моем первом посте:

[]

сейчас буду дальше думать



Отредактировано (Июнь 23, 2009 13:45:55)

Офлайн

#7 Июнь 24, 2009 01:16:56

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Проблемы с кодировкой в текстовом файле

Я тут на днях на Ocaml зажигал… :-)

f = '''
qw er ty
wq re
qw
'''

split = lambda s: filter(None, s.split())

print [\
'' if len(split(s)) == 0 \
else ' '.join(split(s)) if len(split(s)) == 1 \
else ' '.join(split(s)[:2]) if len(split(s)) >= 2 \
else '' \
for s in f.split('\n')]



Офлайн

#8 Июнь 24, 2009 10:35:32

xs13
От:
Зарегистрирован: 2008-09-06
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с кодировкой в текстовом файле

ZZZ
Я тут на днях на Ocaml зажигал… :-)

f = '''
qw er ty
wq re
qw
'''

split = lambda s: filter(None, s.split())

print [\
'' if len(split(s)) == 0 \
else ' '.join(split(s)) if len(split(s)) == 1 \
else ' '.join(split(s)[:2]) if len(split(s)) >= 2 \
else '' \
for s in f.split('\n')]
Извини, но ничего не понял.
Выдает name f is not defined



Офлайн

#9 Июнь 24, 2009 14:14:44

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Проблемы с кодировкой в текстовом файле

xs13
и получается все точно также как в моем первом посте:
[]
сейчас буду дальше думать
Это совершенно нормально :) Где-то здесь совсем недавно поднималась тема о печати списков и в ней Андрей Светлов очень доходчиво объяснил, почему получается именно так, а не иначе.
попробуйте:
lst = [x.strip().split()[:2] for x in file("data.txt", "rb")]
for l in lst :
print(l[0], l[1])
и Вы увидите нормальный текст.



Офлайн

#10 Июнь 24, 2009 17:45:27

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

Проблемы с кодировкой в текстовом файле

pyuser
Код
симпотично )))

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version