Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 29, 2011 12:32:13

leona
От:
Зарегистрирован: 2011-12-28
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка при делении списка Linst Index out of Range

Всем привет !

пытаюсь поделить список на две части. в одной части должны быть слова, а в другой - их частоты.
нашла здесь на форуме соответствующий скрипт

>>> file = open(“celex.txt”, “r”)
>>> word =
>>> freq =
>>> for line in file:
paar = line.split('\t')
word.append(paar.strip())
freq.append(paar.strip())

в результате пайтон пишет:
Traceback (most recent call last):
File “<pyshell#7>”, line 4, in <module>
freq.append(paar.strip())
IndexError: list index out of range

подскажите, пожалуйста, в чем тут проблема и как ее решить? так понимаю, что списки почему-то не совпадают.
объем очень большой, порядка 52000 слов, сгенерирован автоматически. проверяла пары руками, вроде бы, все правильно выдает.

заранее спасибо!



Офлайн

#2 Дек. 29, 2011 17:44:45

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

ошибка при делении списка Linst Index out of Range

from itertools import groupby
words="a b a a s d f g".split()
print [(v,len(list(i)))for (v,i) in groupby(sorted(words))]
то что вы нашли валится когда в строке не 2 элемента



Офлайн

#3 Дек. 29, 2011 19:25:27

leona
От:
Зарегистрирован: 2011-12-28
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка при делении списка Linst Index out of Range

спасибо за разъяснения и помощь!!!!!!!!!!

с наступающим!

doza_and
from itertools import groupby
words="a b a a s d f g".split()
print [(v,len(list(i)))for (v,i) in groupby(sorted(words))]
то что вы нашли валится когда в строке не 2 элемента



Офлайн

#4 Дек. 29, 2011 22:35:00

leona
От:
Зарегистрирован: 2011-12-28
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка при делении списка Linst Index out of Range

попробовала Ваш скрипт, но что-то не то получилось.
он каждый столбик поделил на 2 и приписал 1, еще и перевернул списки. вот так вот получилось:








а должно быть так:

'A : 563', ‘Ae : 4’, ‘aalen : 1’.

скрипт был таков:

>>> celex = {}
>>> from itertools import groupby
>>> f = open('/home/nltk_data/corpora/diss/celex.txt', 'r')
>>> for line in f:
words = line.split()
print [(v, len(list(i))) for (v, i) in groupby(sorted(words))]
подскажите, пожалуйста, что не так делаю



Офлайн

#5 Дек. 29, 2011 22:48:59

leona
От:
Зарегистрирован: 2011-12-28
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка при делении списка Linst Index out of Range

взяла из мануала необходимый скрипт (http://openbook.galileocomputing.de/python/python_kapitel_09_003.htm#mjf25a0f6f7736a878d5dabdac21d3a754)

woerter = {}

fobj = open("woerterbuch.txt", "r")
for line in fobj:
line = line.strip()
zuordnung = line.split(" ")
woerter[zuordnung[0]] = zuordnung[1]
fobj.close()
и он мне выдает ту же ошибку.
исходный файл корректный. в этом не должно быть проблем……



Офлайн

#6 Дек. 30, 2011 00:08:45

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

ошибка при делении списка Linst Index out of Range

woerter = {}

fobj = open("woerterbuch.txt", "r")
for line in fobj:
line = line.strip()
zuordnung = line.split(" ")
if len(zuordnung) != 2:
print 'bad str:',zuordnung
continue
woerter[zuordnung[0]] = zuordnung[1]
fobj.close()



Офлайн

#7 Дек. 30, 2011 11:10:30

leona
От:
Зарегистрирован: 2011-12-28
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка при делении списка Linst Index out of Range

привет !
ОК, спасибо! сейчас попробую Ваш вариант)



Офлайн

#8 Дек. 30, 2011 11:47:01

leona
От:
Зарегистрирован: 2011-12-28
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка при делении списка Linst Index out of Range

с помощью Вашего кода получила вот что:

bad str:
bad str:
bad str:
bad str:
bad str:
bad str:
bad str:

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

zuordnung = line.split("\t")
и получила в качестве вывода “пустоту”:
что не так делаю?….

спасибо!



Офлайн

#9 Дек. 30, 2011 16:44:14

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

ошибка при делении списка Linst Index out of Range

попробуйте заменить line.split(“\t”)
на line.split()
Без аргумента split то же делит строку.



Офлайн

#10 Дек. 30, 2011 17:41:31

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

ошибка при делении списка Linst Index out of Range

leona
с наступающим!
спасибо. вас тоже с Новым Годом



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version