Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 30, 2011 17:51:17

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

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

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

О да, опыт….бы предпочла вторую часть, ту, что про “гений парадоксов друг”:)
но, увы, учиться, учиться….

попробовала с пустым аргументом, но список перестал делиться…

>>> celex = {}
>>> f = open('/home/inna/nltk_data/corpora/diss/celex.txt', 'r')
>>> for line in f:
line = line.strip()
zuordnung = line.split()
if len(zuordnung) !=2:
print zuordnung
continue
celex[zuordnung[0]] = zuordnung[1]


[]
>>> for line in f:
line = line.strip()
zuordnung = line.split()
if len(zuordnung) !=2:
print 'bad str: ' ,zuordnung
continue
celex[zuordnung[0]] = zuordnung[1]


>>> f.close()
>>>
сам файл вроде бы корректный, он для работы с awk изначально предполагался и с этим языком работал.



Офлайн

#2 Дек. 31, 2011 01:20:42

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

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

1. Вы два раза перебираете f
итератор то уже пустой
2. В вашем коде как вы поверяете что словарь пустой?
print celex



Офлайн

#3 Дек. 31, 2011 07:26:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

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

leona
О да, опыт….бы предпочла вторую часть, ту, что про “гений парадоксов друг”smile
но, увы, учиться, учиться….
переписываешь сюда задание в точности и пример содержимого файла (строк десять)



Офлайн

#4 Дек. 31, 2011 10:37:08

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

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

спасибо !


я пытаюсь решить свою собственную задачу, постараюсь менее вязко сформулировать.

мне нужно из списка выбрать глаголы и сохранить их в отдельном файле вместе с их частотами.
выбрать глаголы довольно просто - отфильтровать слова, те, которые оканчиваются на ‘en’, ‘rn’ и начинаются с маленькой буквы.
там, конечно, другие части речи попадутся, но их процент очень мал, отсею вручную.

первые пары из файла celex.txt:
Ae 4
aalen 1
Aal 80
aalglatt 0
Aar 2
Aas 6
Aasgeier 2
ab 2171
ab 2171
Abakus 0
abaendern 16
abaenderlich 0
Abaenderung 17
Abandon 0
abandonnieren 0
abarbeiten 3
abarten 0


С наступающим Новым !)



Офлайн

#5 Дек. 31, 2011 18:00:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

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

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

if __name__ == '__main__':

infile = 'celex.txt'
outfile = 'output.txt'

with open(infile) as fin, \
open(outfile, 'w') as fout:
for line in fin:
word, freq = line.split()
if word[0].lower() == word[0] and \
word.endswith(('en', 'rn')):
print >>fout, word, freq
print 'ok'
С наступающим и наступившим



Отредактировано (Дек. 31, 2011 18:02:12)

Офлайн

#6 Дек. 31, 2011 20:54:06

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

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

:) спасибо ! с Новым годом!!!!!!!!!!!!!!!!!!!!

попробовала Ваш скрипт, не прошла дальше 4 строчки, пайтон выдает синтаксическую ошибку при переносе строки, выделяет красным символ “,”

IDLE 2.6.5      ==== No Subprocess ====
>>> if __name__ == '__main__':
infile = '/home/inna/nltk_data/corpora/diss/celex.txt'
outfile = 'output1.txt'
with open(infile) as fin, \

SyntaxError: invalid syntax
с руками, наверное, у меня что-то не то. заменила “, \” на “+”, тоже пишет об ошибке….



Офлайн

#7 Дек. 31, 2011 23:56:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

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

его надо сохранить в файл script.py и просто запустить



Офлайн

#8 Янв. 1, 2012 13:02:01

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

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

запустила через run, выдал ту же самую синтаксическую ошибку - указывает на запятую после fin….(

а терминал пишет:

@egoist:~$ python script.py
File “script.py”, line 9
with open(infile) as fin, \
^
SyntaxError: invalid syntax

попробовала еще вот так вот, но тоже без успеха:


@egoist:~/python_examples$ ./script.py
File “./script.py”, line 9
with open(infile) as fin, \
^
SyntaxError: invalid syntax
@egoist:~/python_examples$



Отредактировано (Янв. 1, 2012 14:22:53)

Офлайн

#9 Янв. 2, 2012 04:01:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

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

да, вижу

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

if __name__ == '__main__':

infile = 'celex.txt'
outfile = 'output.txt'

with open(infile) as fin:
with open(outfile, 'w') as fout:
for line in fin:
word, freq = line.split()
if word[0].lower() == word[0] and \
word.endswith(('en', 'rn')):
print >>fout, word, freq
print 'ok'
python 2.6 не может сделать with с двумя open()



Офлайн

#10 Янв. 2, 2012 11:01:01

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

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

спасибо ! запустила Ваш скрипт, но пайтон теперь другую ошибку выдает, связанную с делением списка:

Traceback (most recent call last):
File “/home/inna/nltk_data/corpora/diss/script2.py”, line 12, in <module>
word, freq = line.split()
ValueError: need more than 0 values to unpack

в исходном файле было много информации, которая мне не нужна.
он вот так выглядел:
1\A\563\0\95\1.9777\531\99\1.9956\32\54\1.7324
2\Ae\4\0\1\0\3\1\0\1\2\.301
3\aalen\1\0\0\0\1\0\0\0\0\0

мне нужны только второй и третий “элемент”. я в Exel поделила на столбцы автоматически, убрав “\” и сохранила в txt. может, в этом проблема?

попробовала так: = line.split(“\t”)
выдал ошибку: Traceback (most recent call last):
File “/home/inna/nltk_data/corpora/diss/script2.py”, line 12, in <module>
word, freq = line.split(“\t”)
ValueError: need more than 1 value to unpack

исправила на: =line.split(“ ”)
выдал: Traceback (most recent call last):
File “/home/inna/nltk_data/corpora/diss/script2.py”, line 12, in <module>
word, freq = line.split(“ ”)
ValueError: too many values to unpack

PS: набрала от руки пару слов из списка, ошибок не было, все в порядке. значит траблы с txt файлом.
что делать? буду признательна за совет!



Отредактировано (Янв. 2, 2012 11:27:30)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version