Есть файл - input.txt в нем 1млн строк, вид каждой строки:
1:test1:123123123123:bcrypt:123123:321321:1234567890:site.com:1368022680:1532281310:lobby:0:0:0
На выходе нужно получить:
test1:123123123123
(Из каждой строки)
Какими средствами это можно осуществить?
Заранее спасибо.
регулярное выражение, чтобы строке взять test1:123123123123
.*(test.*):bcrypt.*\n- то есть отбрасывать любое количество любых символов до фразы и любое количество после (до конца строки)
Затем прочитать исходный файл по строкам, обработать их, зависать в массив, добавить перевод строк после каждой строки и записать в файл
import re
r='.*(test.*):bcrypt.*\n'
path1="c:\\work\\toster1.txt"
out=[]
with open (path1) as f: #после этого close не нужен, конструкция with open потом сама файл закроет
for line in f:
newline=re.match(r, line)[1] #re.match в случае нахождения выдаст список результатов, нужно из него взять первую найденную группу, она будет в списке под индексом 1.
out+=newline
fout=open('c:\\spsswork\\out1.txt', 'w')
fout.write('\n'.join(out)) #объединить строки из списка, добавив между ними перенос строки
fout.close()
Второй вариант - найти текстовый редактор у которого есть поддержка регулярных выражений, открыть файл и сделать замену через него. В поле поиск - это регулярное выражение, в поле замена - номер группы $1. Если строки склеятся, нужно потом добавить перевод строки \n.
with open('test.txt') as file:
lines = file.readlines()
new_file = open('new_file.txt','w')
for x in lines:
new_line = x.rsplit(':',11)[0]
new_file.write(new_line+'\n')
new_file.close()