ввода выглядит следующим образом:Python Найти Дублирование с Note Струнного Сохранением
assign (resid 3 and name H) (resid 18 and name H) 2.5 2.5 2.5 ! note string 1
assign (resid 16 and name H) (resid 5 and name H) 2.5 2.5 2.5 ! note string 2
assign (resid 42 and name H) (resid 55 and name H) 2.5 2.5 2.5 ! note string 3
assign (resid 44 and name H) (resid 53 and name H) 2.5 2.5 2.5 ! note string 4
assign (resid 53 and name H) (resid 44 and name H) 2.5 2.5 2.5 ! note string 5
Если вы обратите внимание, здесь, строка 4 является 5 являются дубликаты здесь только (resid 44 and name H)
и (resid 53 and name H)
переключается. Мой идеальный выход возвращает что-то вроде этого:
assign (resid 3 and name H) (resid 18 and name H) 2.5 2.5 2.5 ! note string 1
assign (resid 16 and name H) (resid 5 and name H) 2.5 2.5 2.5 ! note string 2
assign (resid 42 and name H) (resid 55 and name H) 2.5 2.5 2.5 ! note string 3
assign (resid 44 and name H) (resid 53 and name H) 2.5 2.5 2.5 ! DUPLICATE ! note string 4 ! note string 5
Так я получил работу с обычным способом чтения файла в Python.
txt = open(filename)
print (lines[0])
Я, очевидно, необходимо, чтобы захватить строки между (
и )
, а затем сделать некоторый тип поиска. Я захватил тех, у кого было регулярное выражение, которое было детским материалом. Моя идея состояла в том, чтобы использовать match[0]
и match[1]
внутри вложенного цикла и выполнять поиск. Моя неудачная попытка является:
for i in lines:
# match = re.search("\\(.*?\\)", i)
match = re.findall('\\(.*?\\)',i)
for x in i:
mm = re.search("match[0] match[1]", lines)
print (mm)
match[0]
и match[1]
дать мне то, что я хочу, если я их печатать. Каков наилучший способ сделать этот поиск, чтобы я мог сохранить и перенести флаг примечания? Я полагаю, что добавление DUPLICATE
к ноте будет тривиально.
Меня действительно интересует только решение python. Мне также нужно использовать это для 400-строчной программы, которую я пишу.
Благодаря
То, что вы действительно могли бы сделать более простой, но, как вы знаете, что строка будет содержать '' DUPLICATE? ('DUPLICATE! Note string 4! Note string 5') вы просто написали' примечание' в конце строк как свою сложную часть проблемы: D – Kasramvd
вы можете попробовать эту строку и дать мне результат? 'Assign (остаток 3 и имя H) (остаток 18 и имя H) 2,5 2,5 2,5! строка примечания 1 присвоить (остаток 16 и имя Н) (остаток 5 и имя Н) 2,5 2,5 2,5! строка примечания 2 назначить (остаток 5 и имя H) (остаток 16 и имя H) 2,5 2,5 2,5! строка примечания 3 назначить (остаток 16 и имя H) (остаток 5 и имя H) 2,5 2,5 2,5! строка примечания 4 назначить (остаток 57 и имя H) (остаток 44 и имя H) 2,5 2,5 2,5! note string 5' – Kasramvd
И для поиска дубликата после извлечения строки между '()' просто используйте 'sorted'! – Kasramvd