2016-11-17 3 views
1

У меня есть файлы журналов, какИдентификаторы Извлечение клиентов и их общее количество заказов

"01-01-2012 01:13:36 sometext date customerid:1768 orders:3 apples" 
"01-09-2013 01:18:34 sometext date customerid:1567678 orders:4 oranges" 
"08-10-2000 08:08:28 sometext date customerid:156 orders:5 grapes" 

Как создать программу питона, который сообщает идентификатор клиента и их общее количество заказов в Python. спасибо за помощь

Примечание: я могу извлечь идентификаторы и заказы клиентов с помощью встроенных функций python (startswith и т. д.) и сохранить в другом списке, я застрял в создании отчета с идентификаторами клиентов и их полными заказами.

+5

Пожалуйста, объясните вашу трудности, фактически отображая код, который вы написали, и явно указываете, в каком коде у вас возникают трудности. Из чего вы пытались, где ваши ошибки/проблемы? Если вы получаете какой-то результат из вашего текущего кода, покажите, на что он сейчас выглядит, а затем укажите, на что он должен выглядеть *. – idjaw

+2

@idjaw Помните, если я сохраню ваш комментарий к моему банку AutoReviewComments? –

+0

@leaf конечно! Вперед :) – idjaw

ответ

0
import re 
rex = re.compile("sometext date customer:(\d+) orders;(\d+)") 
output = [] 
for data in logs: 
    b = rex.search(data) 
    output.append({"customer_id":b.group(1), "orders": b.group(2)}) 

print output 

журналы являются данные из лог-файлов (открыть файл и readlines для чтения данных из файла)

+0

Это не сработает, потому что часть 'sometext date' является только заполнителем здесь и будет заполнена соответствующим значением в каждой строке, что естественно не должно быть таким же. Таким образом, вы можете найти более общие выражения, соответствующие вводу. –

+0

Большое спасибо за советы и code.how о журналах в файле журнала начинается с даты примерно как "01-01-2012 01:13:36 somedata: Customerid: 1234 somedata orders: 4 date" please help –

0
data = {} 
with open('log.txt', 'r') as f: 
    for line in f: 
     id_user = [int(s) for s in line.split() if s.isdigit()][0] # this basically means to use the first digit in the line as the user id. 
     if not id_user in data: 
      data[id_user] = [] 
     data[id_user].append(line) 

for id_user, lines in data.items(): 
    print(id_user, len(lines)) 

EDITED следующие О.П. комментарий:

data = {} 
with open('log.txt', 'r') as f: 
    for line in f: 
     customer_id = [s for s in f.split() if s.find('customerid') != -1][0].split(':')[1] 
     if not customer_id in data: 
      data[customer_id] = [] 
     data[customer_id].append(line) 

for customer_id, lines in data.items(): 
    print(customer_id, len(lines)) 
+0

Большое спасибо за советы и code.how о журналах в файле журнала начинается с даты что-то вроде ниже "01-01-2012 01:13:36 somedata: Customerid: 1234 somedata orders: 4 date" please help –

+0

Я отредактировал свой сценарий в соответствии с вашими потребностями –

Смежные вопросы