Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 15.10.2017
Сообщений: 7

Создать новый текстовый файл, содержащий список ip без повторений из исходного файла

15.10.2017, 10:07. Показов 6234. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан текстовый файл со статистикой посещения сайта за неделю. Имеется 10 строк(10 посещений). Каждая строчка содержит ip адрес, время и название дня недели (например, 139.18.150.126 23:12:44 Sunday).
Создайте новый тектовый файл, который бы содержал список ip без повторений из первого файла. Для каждого ip укажите количетво посещений в неделю, наиболее популярный день недели, наиболее попудярный отрезок времени длиной в один час.
Последней строкой добавьте наиболее популярный отрезок времени длиной в один час в целом для сайта.
Создал блокнот файл(fail) из 10 строк, во второй файл(fail2) записал уникальные адреса и количество посещений для каждого. Как реализовать циклы для популярных дней и часов?
Спасибо
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
my_file = open('fail', 'r')
lines = my_file.readlines()
my_file.close()
#Режем строчки 
a = lines[0]
a = a.split(' ')
b = lines[1]
b = b.split(' ')
c = lines[2]
c = c.split(' ')
d = lines[3]
d = d.split(' ')
e = lines[4]
e = e.split(' ')
f = lines[5]
f = f.split(' ')
g = lines[6]
g = g.split(' ')
h = lines[7]
h = h.split(' ')
i = lines[8]
i = i.split(' ')
j = lines[9]
j = j.split(' ')
 
 
newlines = [a[0] + '\n', b[0]+ '\n', c[0]+ '\n', d[0]+ '\n', e[0]+ '\n', f[0]+ '\n', g[0]+ '\n', h[0]+ '\n', i[0]+ '\n', j[0]+ '\n'] #Сделали список из ip адресов
def f(newlines): #Избавляемся от повторов
    """Модуль позволяет избавиться от повторов и записать уникальные значения в нужном порядке в переменную f"""
    n = []
    for i in newlines:
        if i not in n:
            n.append(i)
    return n 
f = f(newlines) #список уникальных ip адресов
q = ['Список уникальных адресов \n']
 
 
my_file = open('fail2', 'w')
my_file.writelines(q)
my_file.writelines(f)
my_file.close()
i = 0
for element in f: #Считаем посещения в неделю
    f[i] = str(newlines.count(element))
    f[i] = f[i] + '\n'
    i = i + 1
my_file = open('fail2', 'a')
q = ['Количество посещений соответственно \n']
my_file.writelines(q)
my_file.writelines(f)
my_file.close()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2017, 10:07
Ответы с готовыми решениями:

Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла
Дано число k (&lt; 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного...

Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла.
1. Дано число k (&lt; 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного...

Дан текстовый файл, содержащий более k строк. создать новый текстовый файл, содержащий k последних строк исходного файла
дан текстовый файл, содержащий более k строк. создать новый текстовый файл, содержащий k последних строк исходного файла

13
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
15.10.2017, 20:47
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def max_elem(x): 
    counter = 1
    elem = x[0]
    for i in set(x):
        count_ = x.count(i)
        if count_ > counter:
            counter, elem = count_, i
    return elem
                    
result = dict()
with open('input.txt') as fail, open('output.txt','w') as out:
    for i in fail.read().split('\n'):
        ip,tim,day = i.split()
        time_hour = tim[:tim.find(':')]
        if ip in result:
            result[ip][0].append(tim[:tim.find(':')])
            result[ip][1].append(day)
        else:
            result[ip] =[[tim[:tim.find(':')]],[day]]
             
    pop_time_site = []
    for ip,x in result.items():
        nour,day = max_elem(x[0]),max_elem(x[1])
        pop_time_site += x[0]
        result = [ip, len(x[0]), max_elem(x[0]), max_elem(x[1])]
        out.write('IP-{},visits-{}, Pop time-{}, Day-{}\n'.format(*result))
    out.write('Pop time site-{}'.format(max_elem(pop_time_site)))
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
15.10.2017, 20:59
Файл - это file, а fail вот так вот лист обрабатывать, как у Вас.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
with open('my_file.txt') as f_in:
    data = [x.split() for x in f_in.read().split('\n')]
 
ips = [x[0] for x in data]
for ip in set(ips):
    print(ip, ips.count(ip))
 
#most common HOD
hours = [x[1].split(':')[0] for x in data]
print(max(hours, key=hours.count))
 
#most common DOW
days = [x[2] for x in data]
print(max(days, key=days.count))
0
0 / 0 / 0
Регистрация: 15.10.2017
Сообщений: 7
16.10.2017, 19:49  [ТС]
Спасибо! Знаю, в программировании я не силен)

Добавлено через 1 час 25 минут
Semen-Semenich, в 13 строчке ошибку выдает

Добавлено через 1 минуту
Semen-Semenich, ValueError: need more than 0 values to unpack
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
16.10.2017, 19:53
у меня нет ошибок при заданном формате строк в файле (например, 139.18.150.126 23:12:44 Sunday)
139.18.150.126 23:12:44 Sunday
139.18.150.126 22:12:44 Tuesday
139.18.150.124 23:12:44 Sunday
139.18.150.124 23:12:44 Tuesday
139.18.150.126 22:12:44 Tuesday
139.18.150.126 23:12:44 Tuesday
139.18.150.126 22:12:44 Tuesday
139.18.150.127 22:12:44 Tuesday
139.18.150.124 21:12:44 Sunday
139.18.150.127 23:12:44 Tuesday
выдает в выходной файл
IP-139.18.150.126,visits-5, Pop time-22, Day-Tuesday
IP-139.18.150.124,visits-3, Pop time-23, Day-Sunday
IP-139.18.150.127,visits-2, Pop time-22, Day-Tuesday
Pop time site-23
0
0 / 0 / 0
Регистрация: 15.10.2017
Сообщений: 7
16.10.2017, 20:11  [ТС]
Semen-Semenich, а у вас 3 питон? у меня 2,7, может в этом дело...

Добавлено через 15 минут
Semen-Semenich, запустил вашу программу в Python3 Compiler, также выдает эту ошибку при использовании вашего входного тестового файла=(
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
16.10.2017, 20:15
Цитата Сообщение от mike684 Посмотреть сообщение
ValueError: need more than 0 values to unpack
ValueError: требуется больше, чем 0 значений для распаковки
а вы из того файла читаете? файл не пустой?
0
0 / 0 / 0
Регистрация: 15.10.2017
Сообщений: 7
16.10.2017, 20:17  [ТС]
Semen-Semenich, вот файл, не пустой вроде бы
Вложения
Тип файла: txt input.txt (327 байт, 15 просмотров)
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
16.10.2017, 20:30
выполните
Python
1
2
3
4
my_file = open('input.txt', 'r')
lines = my_file.readlines()
my_file.close()
print lines
и
Python
1
2
with open('input.txt') as fl:
    print fail.read().split('\n')
в результате должен быть список строк
0
0 / 0 / 0
Регистрация: 15.10.2017
Сообщений: 7
16.10.2017, 20:35  [ТС]
Semen-Semenich, Результат первого: ['139.18.150.126 23:12:44 Sunday\n', '139.18.150.126 22:12:44 Tuesday\n', '139.18.150.124 23:12:44 Sunday\n', '139.18.150.124 23:12:44 Tuesday\n', '139.18.150.126 22:12:44 Tuesday\n', '139.18.150.126 23:12:44 Tuesday\n', '139.18.150.126 22:12:44 Tuesday\n', '139.18.150.127 22:12:44 Tuesday\n', '139.18.150.124 21:12:44 Sunday\n', '139.18.150.127 23:12:44 Tuesday\n']
Результат второго:['139.18.150.126 23:12:44 Sunday', '139.18.150.126 22:12:44 Tuesday', '139.18.150.124 23:12:44 Sunday', '139.18.150.124 23:12:44 Tuesday', '139.18.150.126 22:12:44 Tuesday', '139.18.150.126 23:12:44 Tuesday', '139.18.150.126 22:12:44 Tuesday', '139.18.150.127 22:12:44 Tuesday', '139.18.150.124 21:12:44 Sunday', '139.18.150.127 23:12:44 Tuesday', '']

Добавлено через 1 минуту
Semen-Semenich, во втором варианте в конце добавились пустые кавычки
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
16.10.2017, 20:52
Цитата Сообщение от mike684 Посмотреть сообщение
во втором варианте в конце добавились пустые кавычки
в файле последняя строка пустая но она есть. добавьте проверку на наличие данных
Python
1
2
3
4
5
6
7
8
9
    for i in fail.read().split('\n'): #  с 12 строки
        if i:
            ip,tim,day = i.split()
            time_hour = tim[:tim.find(':')]
            if ip in result:
                result[ip][0].append(tim[:tim.find(':')])
                result[ip][1].append(day)
            else:
                result[ip] =[[tim[:tim.find(':')]],[day]]
0
0 / 0 / 0
Регистрация: 15.10.2017
Сообщений: 7
16.10.2017, 20:59  [ТС]
Semen-Semenich, Все работает, вы-гений!
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
16.10.2017, 21:01
вот файл без пустой строки работает без проверки
даже видна разница по размеру файлов вашего с пустой строкой и без нее
Вложения
Тип файла: txt input.txt (325 байт, 9 просмотров)
0
16.10.2017, 21:08

Не по теме:

я не гений а только изучаю основы. так что форум для помощи самое то. есть и профи и любители и все за спасибо. а тут кто сможет тем и поможет.удачи!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2017, 21:08
Помогаю со студенческими работами здесь

Создать новый текстовый файл, содержащий K последних строк исходного файла
Доброго времени суток!! Помогите, пожалуйста, с вот таким вот заданием: Дано целое число K (0 &lt; K &lt; 10) и текстовый файл,...

Создать новый текстовый файл, содержащий K последних строк исходного файла
Дано целое число K (0 &lt; K&lt; 10) и текстовый файл, содержащий более K строк. Создать новый текстовый файл, содержащий K последних строк...

Создать новый текстовый файл, содержащий k последних строк исходного файла
Дано число k (&lt; 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного...

Файлы. Создать новый текстовый файл, содержащий К последних строк исходного файла
Дан текстовый фаил содержащий более К строк. Создать новый текстовый фаил содержащий К последних строк этого фаила

Дано целое число N и текстовый файл. Создать новый файл, содержащий все слова длины N из исходного файла
Помогите, пожалуйста, с задачей :sigh: Дано целое число N и текстовый файл. Создать новый файл, содержащий все слова длины N из исходного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru