Найти - Пользователи
Полная версия: ошибка при делении списка Linst Index out of Range
Начало » Python для новичков » ошибка при делении списка Linst Index out of Range
1 2 3
leona
Всем привет !

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

>>> 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 слов, сгенерирован автоматически. проверяла пары руками, вроде бы, все правильно выдает.

заранее спасибо!
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 элемента
leona
спасибо за разъяснения и помощь!!!!!!!!!!

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

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 элемента
leona
попробовала Ваш скрипт, но что-то не то получилось.
он каждый столбик поделил на 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))]
подскажите, пожалуйста, что не так делаю
leona
взяла из мануала необходимый скрипт (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()
и он мне выдает ту же ошибку.
исходный файл корректный. в этом не должно быть проблем……
sp3
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()
leona
привет !
ОК, спасибо! сейчас попробую Ваш вариант)
leona
с помощью Вашего кода получила вот что:

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

так понимаю, что он не разделил из-за того, что split был задан по пробелу, а не по табулятору.
исправила на
zuordnung = line.split("\t")
и получила в качестве вывода “пустоту”:
что не так делаю?….

спасибо!
sp3
попробуйте заменить line.split(“\t”)
на line.split()
Без аргумента split то же делит строку.
Isem
leona
с наступающим!
спасибо. вас тоже с Новым Годом
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB