2011-12-14 4 views
0

내가 2 개 CSV 파일파이썬에서 csv 파일의 열을 병합하여 모든 행의 변수 항목을?

하나는 서로 다른 IP 주소로 traceroutes을 가지고있다 또한 (여기에 마지막 항목은 대상 IP입니다()와 같은 다른 경로는 더 다른 필요한 모든 행의 항목의 변수 숫자가있다는. 홉)

다른

는 대상 목록을 가지고 있으며, 자신의 실제 위치는

첫 번째 파일에 일부 대상은 1 CSV로의 제 2의 항목 및 그 반대의 경우도 마찬가지

를 내가받을 수 있나요 어떻게 현실 세계가 좌표,이 그나마 좌표 목표 IP와 일치하는 파일? 2 개 파일이

hop1,hop2,hop3,hop4,target1 
hop1,hop2,hop3,hop4,hop5,hop6,target2 

target99,position  
+0

처럼 그것은 절대적으로 파이썬에 있어야합니까? GNU/Linux 커맨드 라인에서 하나의 명령으로 할 수 있습니다 :'join' (https://www.gnu.org/software/coreutils/manual/coreutils.html#join-invocation) –

+0

파이썬에서 선호합니다. –

+1

그냥 '가입'에 대한 워드 프로세서를 확인 - 나는 질문에 하나처럼, 라인 당 필드의 변수 번호와 파일에 작동 할 수 있다고 생각하지 않습니다. – jsbueno

답변

0
import csv 

ip_file = open("ipfile.csv") 
position_file = open("positionfile.csv") 
output = open("output.csv", "wt") 

ips = {}  

# create a CSV reader for the proper csv file with locations: 
reader = csv.reader(position_file) 
for line in reader: 
    ips[line[0]] = line[1] 


#now you have the IP + location association 

for line in ip_file.readlines(): 
    ip = line.split(",")[-1].strip() 
    output.write(line.strip() + ", " + (ips[ip] if ip in ips else "location unknown") + "\n") 

output.close() 
+0

ips [line [0]] = line [1] NameError : 'ips'가 정의되지 않았습니다. –

+0

죄송합니다 - 지금 수정되었습니다. 나는 실수로 그것을 버렸다. 덕분에 – jsbueno

+0

. 어떻게 알 수없는 항목을 출력에서 ​​건너 뛸 수 있습니까? –

관련 문제