Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 25, 2016 13:27:21

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбор телефонного лога

Здрям!
В директории со скриптом питона лежит кучка 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')

Офлайн

#2 Янв. 25, 2016 15:23:22

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Разбор телефонного лога

Так у вас функция не вызывается, последнюю строчку надо придвинуть к левому краю. И, кстати, регулярка очень странная написана.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Янв. 25, 2016 16:18:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Разбор телефонного лога

PooH
И, кстати, регулярка очень странная написана.
Это он, походу, не проэкранировал скобки.



Офлайн

#4 Янв. 25, 2016 20:15:48

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Разбор телефонного лога

В данном случае будет короче если использовать
https://docs.python.org/2/library/fileinput.html



Офлайн

#5 Янв. 26, 2016 05:20:16

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбор телефонного лога

py.user.next
Не, это я их не там поставил.

Офлайн

#6 Янв. 26, 2016 05:33:40

Kir@
Зарегистрирован: 2015-08-13
Сообщения: 124
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбор телефонного лога

Рабочая версия:

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')

Отредактировано Kir@ (Янв. 26, 2016 05:53:01)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version