Извините за двойной пост, я обновлю этот вопрос, если я не могу заставить вещи работать:)
Я пытаюсь сравнить два файла. Я перечислю два содержимого файла:
File 1 File 2
"d.complex.1" "d.complex.1"
1 4
5 5
48 47
65 21
d.complex.10 d.complex.10
46 6
21 46
109 121
192 192
Я пытаюсь сравнить содержимое двух файлов, но не тривиальным способом. Я объясню, что я хочу на примере. Если вы наблюдаете содержимое файла, которое я набрал выше, d.complex.1 для file_1 имеет «5», аналогично d.complex.1 в file_2; тот же d.complex.1 в file_1 не имеет ничего похожего на d.complex.10 в file_2. То, что я пытаюсь сделать, это просто распечатать эти d.complex. который не имеет ничего общего с другим d.complex. Рассмотрим d.complex. как заголовок, если хотите. Но все, что я пытаюсь, это сравнить цифры ниже каждого d.complex и если ничего не подходит, я хочу этот конкретный d.complex. из обоих файлов для печати. Если хотя бы один номер присутствует в обоих d.complex. я хочу, чтобы он был отклонен.
Мой код:
Метод, который я выбрал для достижения этой цели, состоял в том, чтобы использовать наборы, а затем сделать разницу. Код, который я написал, был:
first_complex=open( "file1.txt", "r" )
first_complex_lines=first_complex.readlines()
first_complex_lines=map( string.strip, first_complex_lines )
first_complex.close()
second_complex=open( "file2.txt", "r" )
second_complex_lines=second_complex.readlines()
second_complex_lines=map( string.strip, second_complex_lines )
second_complex.close()
list_1=[]
list_2=[]
res_1=[]
for line in first_complex_lines:
if line.startswith( "d.complex" ):
res_1.append( [] )
res_1[-1].append( line )
res_2=[]
for line in second_complex_lines:
if line.startswith( "d.complex" ):
res_2.append( [] )
res_2[-1].append( line )
h=len( res_1 )
k=len( res_2 )
for i in res_1:
for j in res_2:
print i[0]
print j[0]
target_set=set ( i )
target_set_1=set( j )
for s in target_set:
if s not in target_set_1:
if s[0] != "d":
print s
Приведенный выше код дает вывод, подобный этому (просто пример):
d.complex.1.dssp
d.complex.1.dssp
1
48
65
d.complex.1.dssp
d.complex.10.dssp
46
21
109
Я хотел бы иметь:
d.complex.1
d.complex.1 (name from file2)
d.complex.1
d.complex.10 (name from file2)
Прошу прощения за смущение, ребята, но это все, что требуется.
Я так новичок в python, поэтому моя концепция выше может быть ошибочной. Также я никогда раньше не пользовался сетами :(. Кто-нибудь может мне здесь помочь?