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

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

15.10.2017, 10:07. Показов 6174. Ответов 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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru