У меня есть тонна (1000+) текстовых файлов, которые выглядят так:
TextTextText('aaa/bbb`ccc' , "ddd.eee");
TextTextText('yyy/iii`ooo' , "rrr.ttt");
TextTextText('aaa/fff`ggg' , "hhh.jjj");
Чего я хочу добиться - это удалить все строки, содержащие одну и ту же часть "aaa", и оставить только одну строку с ним (удалите все дубликаты).
мой код пока:
import os
from collections import Counter
sourcepath = os.listdir('Process_Directory3/')
for file in sourcepath:
inputfile = 'Process_Directory3/' + file
outputfile = "Output_Directory/" + file
lines_seen = set()
outfile = open(outputfile, "w")
for line in open(inputfile, "r"):
print(line)
cut_line = line.split("'")
new_line = cut_line[1]
cut_line1 = new_line.split("/")
new_line1 = cut_line1[0]
if new_line1 not in lines_seen:
outfile.write(new_line1)
lines_seen.add(new_line1)
outfile.close()
Мой код не работает вообще, я не получаю никаких результатов Консольный отчет:
Line13 in <module>
new_line = cut_line[1]
IndexError: list index out of range
Извините за плохое письмо, это мой первый пост: D С наилучшими пожеланиями
Обновление:
Я добавил
startPattern = "TextTextText"
if(startPattern in line):
, чтобы убедиться, что я нацеливаюсь только строк, которые начинаются с «TextTextText», но по какой-то причине я получаю .txt в папке назначения, которая содержит только 1 строку содержимого «aaa».
В конце концов, вот полностью рабочий код:
import os
sourcepath = os.listdir('Process_Directory3/')
for file in sourcepath:
inputfile = 'Process_Directory3/' + file
outputfile = "Output_Directory/" + file
lines_seen = set()
outfile = open(outputfile, "w")
for line in open(inputfile, "r"):
if line.startswith("TextTextText"):
try:
cut_line = line.split("'")
new_line = cut_line[1]
cut_line1 = new_line.split("/")
new_line1 = cut_line1[0]
if new_line1 not in lines_seen:
outfile.write(line)
lines_seen.add(new_line1)
except:
pass
else:
outfile.write(line)
outfile.close()
Спасибо за отличную помощь, ребята!