Djam36
@Djam36

Python парсер лога, выводит пустые строки в список по регулярному значению? почему?

Привет всем, написал элементарный парсер мне нужно в файле найти 8853738406815367648 вот такие значений, состоящие из 19 символов, только цифры, регулярка простая, но почему-то выводит ещё и пустые значения вида [ ] как от них избавится? и ещё вопрос, как удалить дубликаты значений в списке которые туда попадают после того как лог я распарсил, спасибо за ответы.
Версия питона 2.7
from datetime import datetime
import re
from subprocess import Popen, PIPE
import subprocess
import shutil
Message = []
stroka = []
index= []

for line in open('X:\\fdf\\lol.txt', 'r').readlines():
    index = re.findall('\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d' , line)
    #print index
    stroka.append(index)
    
filter(lambda i: i != '', stroka)
print stroka


Вот пример вывода [], [], [], [], [], [], ['6306436101153673729'], ['1796074986052821275'], [], ['1796074986052821275'],
  • Вопрос задан
  • 971 просмотр
Решения вопроса 2
adugin
@adugin Куратор тега Python
Если файл не слишком большой - можно прочитать его целиком:
with open(r'z:\test.txt') as f:
    print set(re.findall('\d{19}', f.read()))

Иначе - построчно:
with open(r'z:\test.txt') as f:
    print {item for line in f for item in re.findall('\d{19}', line)}
Ответ написан
Комментировать
Djam36
@Djam36 Автор вопроса
Дам сам ответ на свой вопрос, это связанно из-за того что я читаю файл построчно
Исправление можно сделать следующим образом
for line in open('X:\\fdf\\lol.txt', 'r').readlines():
    index = re.findall('\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d' , line)
    #print index
    stroka.append(index)
    
filter(lambda i: i != '', stroka)
if stroka == []
pass
else:
print stroka
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@deliro
1) Жуть, а не регулярка. \d{19} не проще?
2) Множество (set) не может содержать дубликатов.
431b05b9b65a4cbfbb3d53a86b42763d.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы