Форум сайта python.su
0
Всем привет !
пытаюсь поделить список на две части. в одной части должны быть слова, а в другой - их частоты.
нашла здесь на форуме соответствующий скрипт
>>> 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 слов, сгенерирован автоматически. проверяла пары руками, вроде бы, все правильно выдает.
заранее спасибо!
Офлайн
253
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))]
Офлайн
0
спасибо за разъяснения и помощь!!!!!!!!!!
с наступающим!
doza_andто что вы нашли валится когда в строке не 2 элемента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))]
Офлайн
0
попробовала Ваш скрипт, но что-то не то получилось.
он каждый столбик поделил на 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))]Офлайн
0
взяла из мануала необходимый скрипт (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()Офлайн
18
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()Офлайн
0
привет !
ОК, спасибо! сейчас попробую Ваш вариант)
Офлайн
0
с помощью Вашего кода получила вот что:
bad str:
bad str:
bad str:
bad str:
bad str:
bad str:
bad str:
так понимаю, что он не разделил из-за того, что split был задан по пробелу, а не по табулятору.
исправила на
zuordnung = line.split("\t")Офлайн
18
попробуйте заменить line.split(“\t”)
на line.split()
Без аргумента split то же делит строку.
Офлайн
7
leonaспасибо. вас тоже с Новым Годом
с наступающим!
Офлайн