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

Реализовать алгоритм обработки текстового файла

20.02.2018, 22:27. Показов 1466. Ответов 8

Студворк — интернет-сервис помощи студентам
Привет уважаемому сообществу!

Нужно обработать 12 ГБ логов, задача одноразовая, хочу сделать это на Python.
Языка пока не знаю, но если поможете, потом что-то небольшое буду допиливать сам.

Итак, есть файлы с 4 видами строк: (файл всегда начинается с PERS=....)
Пустая - их игнорировать
PERS="VyrezaemEtotTExt";"Ar... из таких строк запоминать в переменную zaptext='VyrezaemEtotTExt'
EXP="/p/Tee-Bld/10000346";prf="... в таких строках ничего менять не надо
AFF="Techno Com";"/c/no... в начало такой строки надо вставить AF2=" и вырезанный ранее текст "VyrezaemEtotTExt" и потом вся строка без изменений.
Каждую строку нужно копировать в выходной файл (некоторые после обработки), пустые строки - не надо.

ЦИКЛ1 -по всем файлам *.txt в директории скрипта
Открываем файл на чтение FILE.txt
Открываем на запись файл FILE.out (тоже имя файла, но расширение out)
zaptext =""
ЦИКЛ2 -чтения input.txt построчно в строку string
если string начинается с PERS= , то в переменную zaptext записываем кусок от PERS=" до ближаейшей "; (VyrezaemEtotTExt в примере выше)
если string начинается с EXP= - ничего не делаем
если string начинается с AFF=, то string = 'AF2=' + zaptext +'";"' + string

если строка string не пустая - вывод её в файл output.txt
конец ЦИКЛ2
Тут можно вывести подсчет количества строк каждого вида (не обызательно)
конец ЦИКЛ1

Задача простая, но у меня уйдет на неё больше чем полдня, помогите пожалуйста
С уважением, Сергей
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.02.2018, 22:27
Ответы с готовыми решениями:

Реализовать алгоритм распаковки сжатого текстового файла с помощью алгоритма RLE
Реализовать алгоритм распаковки сжатого текстового файла с помощью алгоритма RLE. Сохранить результат в файл с расширением .txt....

Реализовать нейросетевой алгоритм обработки сигналов
подскажите как

С++ для обработки текстового файла.
Помогите пожалуйста "Создать текстовый файл с произвольным числом строк. Заменить самое длинное слово каждой строки на ваше...

8
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
20.02.2018, 22:35
Каждый файл txt какого размера?
0
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 8
21.02.2018, 00:31  [ТС]
От 500Мб до 5 Гб,
можно не делать цикл по всем файлам в каталоге, просто давать 1 файл на вход скрипту, я поштучно их обработаю.
0
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
21.02.2018, 00:46
Цитата Сообщение от ТабуретY Посмотреть сообщение
Каждый файл txt какого размера?
Не проблема. Главное, не читать их целиком - читать построчно и сразу записывать в выходной файл.
2
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 8
21.02.2018, 01:13  [ТС]
Помогите мне с кодом цикла2, пожалуйста. Скорость работы скрипта не важна...
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
21.02.2018, 01:17
попробуй такой вариант
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#log.py
'''
usage: python log.py infile.txt
'''
import sys
infile = sys.argv[1]
outfile = infile.split('.')[0] + '.out'
with open(infile) as f_in,open(outfile,'w') as f_out:
    tmp = ''
    for row in f_in:
        if row.startswith('PERS'):
            tmp = row.split(';')[0].split('=')[1]
        elif row.startswith('AFF') and tmp:
            f_out.write('AF2='+tmp + ';' + row)
            tmp=''
        elif row.strip():
            f_out.write(row)
1
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 8
21.02.2018, 01:23  [ТС]
Спасибо!
Красивый код, насколько я начал понимать в Python'e будет делать как раз то, что надо!
Непривычно, что циклы на Питоне непонятно как заканчиваются )
Завтра проверю на свежую голову!
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
21.02.2018, 01:34
заканчиваются отступами
ты лучше прикрепи реальный файл строк 50
1
0 / 0 / 0
Регистрация: 08.06.2017
Сообщений: 8
21.02.2018, 11:44  [ТС]
Все отлично работает, практически со скоростью чтения диском!
Внес небольшие изменения - одну строку добавил, другую убрал

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#log.py
'''
usage: python log.py infile.txt
'''
import sys
infile = sys.argv[1]
#infile='1.txt'
outfile = infile.split('.')[0] + '.out'
with open(infile) as f_in,open(outfile,'w') as f_out:
    tmp = ''
    for row in f_in:
        if row.startswith('PERS'):
            tmp = row.split(';')[0].split('=')[1]
            f_out.write(row)   # добавил вывод строки с PERS
        elif row.startswith('AFF') and tmp:
            f_out.write('AF2='+tmp + ';' + row)
            #tmp=''  # убрал, так как нового PERS не было еще  
        elif row.strip():
            f_out.write(row)
СПАСИБО ЕЩЕ РАЗ!

Добавлено через 1 час 29 минут
20 ГБ логов обработал за 8 минут!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.02.2018, 11:44
Помогаю со студенческими работами здесь

Программа обработки текстового файла
Помогите написать программу на Си! Дано: Текстовый файл inString.txt содержит список (столбец) слов русского языка - имён...

Программа для обработки текстового файла
Помогите, пожалуйста, написать программу. Заранее спасибо. Создать программу для обработки текстового файла, реализующую две...

Запросить вариант обработки текстового файла
Запросить пользователя режим работы с текстовым файлом

Реализовать алгоритм организации и обработки информации с помощью В-деревьев
Добрый день форумчане. Появилась необходимость реализовать алгоритм организации и обработки информации с помощью В-деревьев. ...

Составить текст программы обработки текстового файла
Составить текст программы обработки текстового файла 1. Содержащий процедуру создания нового текстового файла. 2....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru