Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 20, 2016 13:34:06

Alibanan
Зарегистрирован: 2016-12-20
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Генерация списка на лету + логирование в файлы и консоль + счетчик на каждое слово

С сайта получаю данные через переменную name_elem_site.
Данные - 1 слово.
Через какое-то время оно заменяется на другое. Может даже по 10 слов в секунду или больше. Т.е. вместо переменной может быть: Слово1, Слово2, Слово3, .., Слово2, Слово3, .., СловоN.
1) Необходимо эти данные записывать в список(?) и помещать в лог файл1.
2) Затем, считывать этот лог файл и подсчитывать количество повторений с выводом в консоль и записью в другой лог файл2.
Вот код который есть:

         with open("logfile.txt", "w") as log:
        while True:
            name_elem_site = text_element_by_class_name(driver, "texttexttext")
            a = []
            for word in name_elem_site: # хз какое условие, количество слов не известно, но явно не больше 50
                a.append(str(name_elem_site))
                print(a)
                log.write(str(name_elem_site) + "\n")
                log.flush()

Без счетчика такой код, но естественно тут и части нет и не правильно, т.к. в лог файле по 100500 повторений действующего слова на сайте.
Может вообще не список нужен, а другой вариант.

Офлайн

#2 Дек. 20, 2016 16:30:23

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Генерация списка на лету + логирование в файлы и консоль + счетчик на каждое слово

Заполняйте словарь с инкрементом по значению
В простейшем виде что бы было понятен ход мыслей

 tmp = [1, 2, 3, 4, 1, 2, 3, 5, 5, 5, 2]
result = {}
for i in tmp:
    if i in result:
        result[i] += 1
    else:
        result[i] = 1
print(result)

Вернет словарь значений с количеством раз вхождения каждого члена

 {1: 2, 2: 3, 3: 2, 4: 1, 5: 3}
К примеру 5 у нас встречается 3 раза (5: 3)



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Дек. 20, 2016 19:10:15

Alibanan
Зарегистрирован: 2016-12-20
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Генерация списка на лету + логирование в файлы и консоль + счетчик на каждое слово

ZerG
Заполняйте словарь с инкрементом по значениюВ простейшем виде что бы было понятен ход мыслей
 name_elem_site = text_element_by_class_name(driver, "texttexttext")
            currentList = []
            currentWord = currentList.append(str(name_elem_site))
            if name_elem_site:
                for word in currentList:
                    if word == currentWord:
                        continue
                    currentWord = word
                    currentList.append(word)
                    log.write("%s\n" % word)
                    log.flush()
Теперь в логах Слово1, Слово1,…, Слово2, Слово2,..
Т.е. дубляж. Как сделать проверку? Если текущее значение не равно последней записи в список, то добавить.
Это должно исправить проблему с повторами на 1 слово.
И должно получиться: Слово1, Слово2, Слово1, Слово2, Слово3, Слово1….

Отредактировано Alibanan (Дек. 21, 2016 08:58:22)

Офлайн

#4 Дек. 21, 2016 08:38:55

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Генерация списка на лету + логирование в файлы и консоль + счетчик на каждое слово

ошибка стопа?
выведите принтом word и посмотрите - может там одно значение?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Дек. 21, 2016 08:59:12

Alibanan
Зарегистрирован: 2016-12-20
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Генерация списка на лету + логирование в файлы и консоль + счетчик на каждое слово

ZerG
ошибка стопа? выведите принтом word и посмотрите - может там одно значение?
Обновил пост выше. Новая проблема с повторами. Нельзя подряд вводить 2 одинаковых слова.
 if currentList[-1] != word:
   currentList.append(word)
Всё равно так же получается… WTF?

Отредактировано Alibanan (Дек. 21, 2016 09:07:31)

Офлайн

#6 Дек. 21, 2016 09:47:46

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2840
Репутация: +  186  -
Профиль   Отправить e-mail  

Генерация списка на лету + логирование в файлы и консоль + счетчик на каждое слово

> Затем, считывать этот лог файл и подсчитывать количество повторений с выводом в консоль и записью в другой лог файл2.

Зачем такие сложность считай сразу повторы из потока через

 from collections import Counter



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Дек. 21, 2016 09:54:32

Alibanan
Зарегистрирован: 2016-12-20
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Генерация списка на лету + логирование в файлы и консоль + счетчик на каждое слово

Rodegast
> Затем, считывать этот лог файл и подсчитывать количество повторений с выводом в консоль и записью в другой лог файл2.Зачем такие сложность считай сразу повторы из потока через
Возможно, потому что я в питоне пару дней
И это не всё задание. После этой части буду крутить ещё, где отдельно понадобятся 2 лога таких.
Поэтому нужно исправить ввод подряд идущих одинаковых значений. А потом уже смотреть что и как можно поменять/улучшить, если смогу.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version