Найти - Пользователи
Полная версия: Разбор телефонного лога
Начало » Python для новичков » Разбор телефонного лога
1
Kir@
Здрям!
В директории со скриптом питона лежит кучка txt файлов.
Надо в каждом файле по регулярному выражению найти нужный номер телефона, скопировать найденное значение в файлик result.txt.

Нихт арбайтен

import os
import glob
import re
 
def process(root, pattern, outfn):
    # открываем выходной файл
    with open(outfn, "w") as out:
        # готовим итератор файлов, соответствующих шаблону
        for fn in glob.iglob(os.path.join(os.path.abspath(root), pattern)):
            # открываем каждый найденный файл
            with open(fn, "r") as f:
                #построчная обработка
                for line in f:
                    zvonok=re.search(r'(66666)[\s\d\/:;.&]*',f)
                    # пишем результат обработки в выходной файл
                    out.write(zvonok)
    process('.', '*.txt', 'result.txt')
PooH
Так у вас функция не вызывается, последнюю строчку надо придвинуть к левому краю. И, кстати, регулярка очень странная написана.
py.user.next
PooH
И, кстати, регулярка очень странная написана.
Это он, походу, не проэкранировал скобки.
doza_and
В данном случае будет короче если использовать
https://docs.python.org/2/library/fileinput.html
Kir@
py.user.next
Не, это я их не там поставил.
Kir@
Рабочая версия:
import os
import glob
import re
def process(root, pattern, outfn):
    # готовим итератор файлов, соответствующих шаблону
    for fn in glob.iglob(os.path.join(os.path.abspath(root), pattern)):
        # открываем каждый найденный файл
        with open(fn, "r") as f:
            a=f.read()
            #поменять номер
            zvonok=re.search(r'(66666)\s*(\d{1,2}\/\d{1,2})\s*([(\d{1,2}\:)]*)\s*([(\d{1,2}\:)]*)[\s\d\.:]*\&([\d]*)', a)
            if zvonok:
                zvonok_print='абонент '+zvonok.group(1)+' позвонил '+zvonok.group(2)+' в '+zvonok.group(3)+' абоненту '+zvonok.group(5)+'. Продолжительность звонка '+zvonok.group(4)+'\n'
                result = open('result.txt', 'a')
                result.write(zvonok_print)
                #print(zvonok_print,'\n')
                
            else:
                zvonok_print='сегодня никому не звонил'
            f.close()
            result.close()
process('.', '*.txt', 'result.txt')
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