Найти - Пользователи
Полная версия: Генерация списка на лету + логирование в файлы и консоль + счетчик на каждое слово
Начало » Python для новичков » Генерация списка на лету + логирование в файлы и консоль + счетчик на каждое слово
1
Alibanan
С сайта получаю данные через переменную 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 повторений действующего слова на сайте.
Может вообще не список нужен, а другой вариант.
ZerG
Заполняйте словарь с инкрементом по значению
В простейшем виде что бы было понятен ход мыслей
 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)
Alibanan
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….

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

Зачем такие сложность считай сразу повторы из потока через
 from collections import Counter
Alibanan
Rodegast
> Затем, считывать этот лог файл и подсчитывать количество повторений с выводом в консоль и записью в другой лог файл2.Зачем такие сложность считай сразу повторы из потока через
Возможно, потому что я в питоне пару дней
И это не всё задание. После этой части буду крутить ещё, где отдельно понадобятся 2 лога таких.
Поэтому нужно исправить ввод подряд идущих одинаковых значений. А потом уже смотреть что и как можно поменять/улучшить, если смогу.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB