Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 15, 2014 22:30:31

sasha1995
Зарегистрирован: 2014-11-15
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

цикл не вмещает столько элементов?

пытаюсь написать прогу, которая классифицирует тексты по двум типам -о добычи зерна и добычи ископаемых. есть трейнсет в отором 0 перед текстом означает что текст о полезных ископаемых, 1 о зерне. все вроде получается, делаю примитивно по ключевым словам, но удачно классифицировав несколько (около 10) текстов пишет ошибку “list index out of range”. пробовал и while и for i in range(), и там и там ошибка. что делать? здесь код и с while и с for http://pastebin.com/WDzmVFgY http://pastebin.com/DGY3v21U
заранее благодарен за советы

Офлайн

#2 Ноя. 15, 2014 23:05:31

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

цикл не вмещает столько элементов?

1. list index out of range - исключение если осуществлен выход за пределы массива, в данном случае списка, для его обработки необходимо применять конструкции вида try/except. Но в данном случае вам это не нужно, потому как:

2. Вам не нужен range и перебор по индексам списка. Цикл for в python итак за вас это делает.

mylist = ['a', 'b', 'c', 'd']
for c in mylist:
    print c

3. Так не пишут:
if c=="agriculture" or c== "maize" or c=="food" or c=="wheat" or c=="corn" or c=="cotton" or c=="grain" or c=="soybeans" or c== "agricultural":
Нужно так:
if c in  ("agriculture", "maize", "food", "wheat", "cotton", "grain", "soybeans", "agricultural"):

Офлайн

#3 Ноя. 15, 2014 23:26:33

sasha1995
Зарегистрирован: 2014-11-15
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

цикл не вмещает столько элементов?

дело в том что если я обращаюсь сразу к списку то ошибка другая “list integeres must be integers not list” это как я понимаю про i, я поэтому range и сделал. Тем более в первом цикле я обращаюсь ко всему массиву текстов а во втором только к одному тексту и в нем смотрю на слова

Офлайн

#4 Ноя. 16, 2014 00:58:27

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

цикл не вмещает столько элементов?

Может тогда для Вас лучше будет вообще обойтись без циклов.

with open('C:\\3 form\\proga\\train_set4.txt','r') as data:
    text = data.read()
    if any(x for x in ("agriculture", "maize", "food", "wheat", "cotton", "grain", "soybeans", "agricultural") if x in text):
        print 'food'
    if any(x for x in ("oil", "petroleum", "barrel", "fuel", "gas", "energy") if x in text):
        print 'mineral'

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version