Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 7, 2012 09:23:51

Dimazzzzzz
Зарегистрирован: 2012-05-06
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое создание массивов

Собственно суть такова: моя программа извлекает определенной число из определенного url, выводит его мне, потом берет след. url, извлекает оттуда число и т.д. В итоге получается такой своеобразный список чисел, с которыми непонятно что делать. Хотелось бы чтобы после прохода по циклу она добавляла число в массив, чтобы массив к концу выполнения программы состоял из большого набора чисел(одномерный хотя-бы научиться). Вот сам код:

import  urllib
for J in xrange(803311230,803351000):
 url='http://www.vezetmne.ru/auctions/'+str(J)
 urllib.urlretrieve(url=url, filename='COD.html')
 infile = open('COD.html')
 lines = infile.readlines()
 for i in range(len(lines)):
    line = lines[i]# так короче
    if 'cbid=alterStep' in line:
       A = lines[i].strip()
       Raznost = A[24:28]
       .........(много других вычислений)
       print Raznost
    infile.close()
Массив хотелось бы для переменной Raznost. У меня получается создавать массив, который после каждого прохода по циклу меняется, поскольку меняется и сама переменная Raznost, а вот чтобы он не удалял не получается. Если нужно - могу весь код кинуть( но я думаю это только захламит страницу)
Помогите пожалуйста Буду очень благодарен!)

Офлайн

#2 Июнь 7, 2012 09:42:31

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Динамическое создание массивов

Не совсем понял чего вы хотите. Может этого?:

import  urllib
import contextlib

for i in xrange(803311230, 803351000):
url='http://www.vezetmne.ru/auctions/'+str(i)
rasnost = []
with contextlib.closing(urllib.urlopen(ulr)) as inp:
for line in inp:
if 'cbid=alterStep' in line:
rasnost.append(line.strip()[24:28])
.........(много других вычислений)
print raznost



Отредактировано Ed (Июнь 7, 2012 09:43:36)

Офлайн

#3 Июнь 7, 2012 09:44:50

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Динамическое создание массивов

Почитайте учебник что ли. Или туториал.

>>> from time import time, sleep
>>> timelist = []
>>> for _ in xrange(10):
...     timelist.append(time())
...     sleep(1)
...     
>>> timelist
[1339051363.754317, 1339051364.755389, 1339051365.756446, 1339051366.757503, 133
9051367.758563, 1339051368.759625, 1339051369.76044, 1339051370.761374, 13390513
71.762433, 1339051372.762765]
>>> timelist = [time() for _ in xrange(10)]
>>> timelist
[1339051471.765869, 1339051471.765871, 1339051471.765872, 1339051471.765873, 133
9051471.765874, 1339051471.765876, 1339051471.765877, 1339051471.765878, 1339051
471.765879, 1339051471.76588]



Офлайн

#4 Июнь 7, 2012 11:15:11

Dimazzzzzz
Зарегистрирован: 2012-05-06
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое создание массивов

Ed
Не совсем понял чего вы хотите. Может этого?:
import  urllib
import contextlib

for i in xrange(803311230, 803351000):
url='http://www.vezetmne.ru/auctions/'+str(i)
rasnost = []
with contextlib.closing(urllib.urlopen(ulr)) as inp:
for line in inp:
if 'cbid=alterStep' in line:
rasnost.append(line.strip()[24:28])
.........(много других вычислений)
print raznost
Попробую объяснить немного конкретнее. Мне нужно получить один массив, в котором были бы все найденные rasnost. Например чтобы он выводил:
>>> a
array([ 0.25,  0.25,  0.25,  0.05,  0.5])
Мне это нужно, поскольку потом прийдется работать с большим количеством графиков по найденным данным, которые удобнее всего на мой взгляд строить используя одинаковые массивы
Ваш пример выводит несколько массивов, из которых в памяти сохраняется только последний. Вот опять-же пример работы программы:
['0.25']
['0.05']
['0.25']
['0.25']

Офлайн

#5 Июнь 7, 2012 13:27:30

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Динамическое создание массивов

Давай пример без urllib, а то непонятно что у тебя на входе, что на выходе.
Дай какие-то данные и скажи что нужно получить



Офлайн

#6 Июнь 7, 2012 16:03:05

Dimazzzzzz
Зарегистрирован: 2012-05-06
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое создание массивов

FishHook
Давай пример без urllib, а то непонятно что у тебя на входе, что на выходе.
Дай какие-то данные и скажи что нужно получить
Вот смотри: моя программа анализирует аукционы: заходит на определенный лот, берет число, потом заходит на след. лот, берет еще одно число и т.д. Мне нужно чтобы эти числа сохранились в итоге в одном массиве.
Без url у меня все получается как-раз, я вот тестовую программу писал на создание массива, вот она работает нормально и выдает все, что нужно:
import urllib
import contextlib
R = []
for i in xrange(10):
    A = "TYUIGIH" + str(i)
    R.append(A)
R
Тоесть впринципе как это делать я понимаю, но когда начинаю вносить в свою программу - получается либо массивы, состоящие из 1-го элемента, либо только последний элемент….

Офлайн

#7 Июнь 7, 2012 17:21:38

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Динамическое создание массивов

Dimazzzzzz
FishHook
Давай пример без urllib, а то непонятно что у тебя на входе, что на выходе.
Дай какие-то данные и скажи что нужно получить
Вот смотри: моя программа анализирует аукционы: заходит на определенный лот, берет число, потом заходит на след. лот, берет еще одно число и т.д. Мне нужно чтобы эти числа сохранились в итоге в одном массиве.
Без url у меня все получается как-раз, я вот тестовую программу писал на создание массива, вот она работает нормально и выдает все, что нужно:
import urllib
import contextlib
R = []
for i in xrange(10):
    A = "TYUIGIH" + str(i)
    R.append(A)
R
Тоесть впринципе как это делать я понимаю, но когда начинаю вносить в свою программу - получается либо массивы, состоящие из 1-го элемента, либо только последний элемент….

А в каком месте ты добавляешь значения в список (массив), я так и не понял
Здесь, что ли?
Raznost = A
Если здесь, то ты на каждой иттерации изменяешь Raznost, а не добавляешь значения.

По-моему надо как-то так
Raznost=[]
 for line in infile.readlines():
       if 'cbid=alterStep' in line:
           A = lines[i].strip()
           Raznost + = A[24:28]



Офлайн

#8 Июнь 7, 2012 17:47:06

Dimazzzzzz
Зарегистрирован: 2012-05-06
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое создание массивов

Сори, я не приложил новый код, добавляю либо вот так:

for J in xrange(803311230,803351000):
 url='http://www.vezetmne.ru/auctions/'+str(J)
 urllib.urlretrieve(url=url, filename='COD.html')
 infile = open('COD.html')
 lines = infile.readlines()
 for i in range(len(lines)):
    line = lines[i]# так короче
    R = []
    if 'cbid=alterStep' in line:
       A = lines[i].strip()
       Raznost = A[24:28]
       R.append(Raznost)
       print R

Либо вот так:
for i in xrange(803311230, 803311630):
    url='http://www.vezetmne.ru/auctions/'+str(i)
    rasnost = []
    with contextlib.closing(urllib.urlopen(url)) as inp:
        for line in inp:
            if 'cbid=alterStep' in line:
                rasnost.append(line.strip()[24:28])
                print rasnost
Итог получается вот такой:
['0.25']
['0.05']
['0.25']
['0.25']
А хотелось бы:
array([ 0.25,  0.05,  0.25,  0.25])
У меня более 1000 таких данных(ясен пень не 4 ), руками не смогу в один массив перегнать

Офлайн

#9 Июнь 7, 2012 18:17:34

Cryo
Зарегистрирован: 2012-06-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое создание массивов

Dimazzzzzz
У меня более 1000 таких данных(ясен пень не 4 ), руками не смогу в один массив перегнать
Так зачем на каждой итерации выводить массив? Вынесите print вне цикла

Офлайн

#10 Июнь 7, 2012 18:26:27

Dimazzzzzz
Зарегистрирован: 2012-05-06
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое создание массивов

если вывести print вне цикла, то в массив он внесет только последнее значение переменной(уже пробовал)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version