Форум сайта python.su
13
Ну, во-первых вы не проверили, что keyword у вас в строке. А во вторых, num - это порядковый номер keyword в списке, то есть для ‘Участ’ это 0, для ‘Кажд’ - 1, и т.д. Напрягите мозг. Что добавить-то нужно в ty, если нашли в строке ‘Участ’? А если нашли ‘Кажд’?
Офлайн
13
DimazzzzzzСпасибо. С таким трафиком, как мы с вами создали скоро еще 1000 будет :) Народ скоро ругаться начнет.
P.S. Поздравляю с 1000 и золотой полоской заранее :))))))
Офлайн
0
EdКогда я напряг свой полуночный мозг получилось вот так, очевидно где-то ошибка, счас стараюсь ее найтиDimazzzzzzСпасибо. С таким трафиком, как мы с вами создали скоро еще 1000 будет
P.S. Поздравляю с 1000 и золотой полоской заранее)))))
Народ скоро ругаться начнет.
EdЕсли я правильно понял и вы предлагаете заполнить список ty нулями, то я не понимаю как это нужно использовать чтобы решить проблему
Хорошо. Проблема с 0 решается просто - проинициализируйте ty нулями и все.
#-*- coding: cp1251 -*- """ Created on Tue Jun 05 19:35:11 2012 @author: Dimazzzzzz """ #/usr/bin/python import urllib import numpy as np rasnost = [] Data =[] Blitz1 = [] Stavka2 = [] Igrok2 = [] Typs = [[]] * 10 for J in xrange(803311466, 803311500): url='http://www.vezetmne.ru/auctions/'+str(J) urllib.urlretrieve(url=url, filename='COD.html') infile = open('COD.html') lines = infile.readlines() print J for i in range(len(lines)): line = lines[i]# так короче if 'cbid=alterStep' in line: rasnost.append(np.float(line.strip()[24:28])) if 'item_bigcell' in line: types = [lines[i+1].strip()[10:40], lines[i+2].strip()[10:40], lines[i+3].strip()[10:40], lines[i+4].strip()[10:40], lines[i+5].strip()[10:40]] if 'Аукцион завершен' in line: Data.append(line.strip()[-28:-19]) if 'Блиц-цена' in line: Origin = line.strip()[91:97] if '.' in Origin: Orig = Origin[0:5] else: Orig = Origin if '.' in Orig: AA = Orig[0:4] else: AA = Orig if '.' in AA: BB = AA[0:3] else: BB = AA if '.' in BB: Blitz1.append(np.int(BB[0:2])) else: Blitz1.append(np.int(BB)) if '<div class="history" id="history">' in line: Stavka1 = lines[i+3].strip()[21:50]# stavka.append(line.strip()[21:30]) Stavka2.append(np.float(Stavka1[0:Stavka1.find('р')])) Igrok1 = lines[i+3].strip()[21:-24] # А вот для ника возьмем с минусом Igrok2.append(Igrok1[Stavka1.find('р')+26:]) ty = [] keywords = ['Участ', 'Кажд', 'Лог', 'Днев', 'Один', 'Аукцион для', 'Ставок', 'Фикс', '100', 'Бесп'] for q in range(len(types)): for num, keyword in enumerate(keywords): if 'keyword' in types[q]: ty.append(num+1) else: ty.append(0) #if 'Участ' in types[q]: # Не требует свободных лотов (+) #elif 'Кажд' in types[q]: # ty.append(2) # Ограниченное количество ставок (+) #elif 'Лог' in types[q]: # ty.append(3) #'Логины зашифрованы'(+) #elif 'Днев' in types[q]: # ty.append(4) #'Дневной'(+) #elif 'Один' in types[q]: # ty.append(5) #'С блефом' (+) - Внезапно ОО # elif 'Аукцион для' in types[q]: #ty.append(6) #' Для новичков' (+) # elif 'Ставк' in types[q]: # ty.append(7) #'На понижение' # elif 'Фикс' in types[q]: # ty.append(8) #'Фиксированная цена' # elif '100' in types[q]: # ty.append(9) #'100% скидка' #elif 'Бесп' in types[q]: # ty.append(10) #'Бесплатные ставки' # else: # ty.append(0) for u in range(len(Typs)): Typs[u].append(int(u+1 in ty)) print rasnost, '\n', Blitz1, '\n', Stavka2, '\n', Igrok2, '\n', Data W = np.array(rasnost) Blitz = np.array(Blitz1) Stavka = np.array(Stavka2) Mtyp1 = np.array(Typs)
Отредактировано Dimazzzzzz (Июнь 10, 2012 01:08:13)
Офлайн
13
Хорошо. Проблема с 0 решается просто - проинициализируйте ty нулями и все.
Офлайн
0
EdЕсли я правильно понял и вы предлагаете заполнить список ty нулями, то я не понимаю как это нужно использовать чтобы решить проблему.
Хорошо. Проблема с 0 решается просто - проинициализируйте ty нулями и все.
Офлайн
13
Заполнить так:
ty = [0] * len(keywords)
Офлайн
0
EdЖелание есть всегда, но сил в 2:35 уже не остается, я даже не могу понять идеи с нулями
Заполнить так:и это поможет избавиться от ветки else, с которой у вас были проблемы. Ну и .append в этом случае не нужен будет.ty = [0] * len(keywords)
Ну, если желание еще осталось, излагайте каким образом вы это дальше собираетесь использовать. От этого зависит и то, что мы будем делать с Typs.


Офлайн
52
Не, ну это медаль как минимум. Обоим.
Офлайн
857
с первой страницы совет
Ed
Вместо этого попользуем один двумерный, вот такой:Typs = [[]] * 10
>>> lsts = [[]] * 10 >>> lsts [[], [], [], [], [], [], [], [], [], []] >>> lsts[0].append(1) >>> lsts [[1], [1], [1], [1], [1], [1], [1], [1], [1], [1]] >>>
>>> lsts = [[] for _ in range(10)] >>> lsts [[], [], [], [], [], [], [], [], [], []] >>> lsts[0].append(1) >>> lsts [[1], [], [], [], [], [], [], [], [], []] >>>
Edкод настолько запутан, что он его даже проверить не может, потому что даже не помнит, что пытается сделать
Да, совершено верно. Нужно u+1. Откуда тогда верные данные?
Dimazzzzzzэто всё один и тот же список, повторяющийся десять раз
1. Переменная Typs, например, получается вот такая:[[0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]]
Отредактировано py.user.next (Июнь 10, 2012 05:24:32)
Офлайн
13
Угу, учтем, спасибо. У меня цель была как раз научить человека пользоваться нормальными питоновыми конструкциями, распутывая этот код. Видно, что человек книжки читал, просто навыков программирования нет. Их не все могут из книг почерпнуть.
Думаю здесь продолжать вряд ли стоит, и так тут нагенерили 5 страниц. Приватно добьем, а сюда результат положим. Ну, если таковой будет, конечно :)
Офлайн