2011-12-31 5 views
2

두 개의 변수 readARP와 readFPING에 일련의 IP가 나열되어 있고 다른 변수를 비교하려고합니다. 그 (것)들을 비교 한 후에 나는 차이가 있으면 인쇄하고 싶으면.변수를 비교하고 파이썬에서 차이점을 찾는 방법

readARP = scanProcess.read() 
readFPING = fpingscanPocess.read() 

>>> print readARP 
192.168.1.1 
192.168.1.100 
192.168.1.1 

>>> print readFPING 
192.168.1.1 
192.168.2.1 
192.168.1.12 

내가 둘을 비교 한 후 인쇄 할 192.168.2.1 192.168.1.12 192.168.1.100가 두 개의 고유 때문이다.

P. 파이썬에서 말하는 "readFPING"은 무엇입니까? 나는 변수라는 용어를 수정했습니다.

다른 점이 무엇인지 알아 낸 후에 어떻게 다른 변수를 추가 할 수 있습니까? 예 : 192.168.1.2의 readFPING의 밤은하지만 난 다음

+0

변수라고합니다. 예. –

답변

3

간단하게 얻을 수 있습니다. symmetric_difference 세트를 사용하여 입력 소스에서 고유 한 요소를 찾을 수 있습니다.

readARP=scanProcess.read() 
readFPING = fpingscanPocess.read() 
print readARP 
192.168.1.1 
192.168.1.100 
192.168.1.1 

print readFPING 
192.168.1.1 
192.168.2.1 
192.168.1.12 

print '\n'.join(set(readARP.splitlines()).symmetric_difference(readFPING.splitlines())) 
192.168.1.100 
192.168.2.1 
192.168.1.12 
+0

예이 작품은 고맙습니다. readARP 및 readFPING과 동일한 형식을 따르는 변수에 "print '\ n'.join (set (readARP.splitlines()). symmetric_difference (readFPING.splitlines()))"결과를 저장하는 것이 얼마나 어렵습니까? –

+0

@ S-Ns-3, 인쇄를 변수 이름으로 바꾸는 것만 큼 간단합니다. – Abhijit

+0

고마워, 나는 전에 그것을 시도했지만 나는 나를 망쳐 놓은 따옴표로 쓰려고했다 : P –

2
for IP in readARP: 
    if IP not in readFPING: 
     print IP 

for IP in readFPING: 
    if IP not in readARP: 
     print IP 

이 작업을 수행 할 수 분명히 쉬운 방법이 있습니다 (마스터 IP 목록 만들기)을 추가 할 수 있지만, 파이썬에 익숙하기 때문에 나는거야 그것을 간단하게하십시오.

+0

고마워 이것이 맞았지 만 다른 대답은 내가 정말로 찾고 있던 것이었다. 나는 빠른 대답을 주신 덕분에 초기 질문을 편집했다. 변수 파이썬 지식에 대한 담당자를주었습니다. –

+0

더 가벼운 쪽에서 더 쉬운 것은 너무 단순하지 않습니다 :-) – Abhijit

관련 문제