2014-12-30 2 views
-4

어려운 문제 나는 2 열파이썬에서 동등성을 만드는 방법은 무엇입니까? 내게

4,8 
5,64 
6,12 
7,54 
8,2 

와 CSV가 ... 50 개 이상의 항목

한 컬럼 제 CSV (제 CSV에서 두 번째 열의 엔트리) .

는 내가 처음 CSV에서 해당 항목을 찾을 수 있습니다 (쓰기)하려고 :

54,7 
8,4 
12,6 
8,4 
64,5 
54,7 
... 
+0

미안 해요, 당신은 "등가"가 무엇을 의미합니까? "해결 된"CSV를 예로들 수 있습니까? (즉, 마지막 예에서 "?"대신에 있어야하는 것은 무엇입니까?) – Roberto

+0

"동등성"이란 무엇을 의미합니까? 당신이 의미하는 것을 설명 할 수 있습니까, 아니면 어떤 예도 유용 할 수 있습니까? – Marcin

+1

열을 조 변경하려고하십니까? 그렇다면 예상 결과와 실제 결과 사이의 순서를 유지함으로써 명확한 포인트를 전달하는 데 도움이됩니다. – Makoto

답변

0

OK ... 두 개의 CSV 파일이 있고 두 번째는 B의 값 중 하나가 열이있는 경우 :

with open('test.csv') as f: 
    line_values = [line.strip().split(',') for line in f.readlines()] 
transposed_values = dict([(v.strip(), k) for k, v in line_values]) 
with open('test2.csv') as fi: 
    with open('out.csv', 'w') as fo: 
     for line in fi.readlines(): 
      B = line.strip() 
      try: 
       print >>fo, '{}, {}'.format(B, transposed_values[B]) 
      except KeyError: 
       print >>fo, '{}, ?'.format(B) 

입력 파일, test.csv :

4, 8 
5, 64 
6, 12 
7, 54 
8, 2 

입력 파일을 , test2.csv :

54 
8 
12 
8 
64 
54 

출력 파일, out.csv :

54, 7 
8, 4 
12, 6 
8, 4 
64, 5 
54, 7 
+0

두 CSV가 같은 주문일 경우에만 작동 – Marco

+0

주문에 의한 의미가 확실하지 않습니다. 하나의 열 (첫 번째 파일의 B 항목)이있는 두 번째 파일이 있고 해당 A 항목을 찾고 싶습니까? – xnx

+0

예 @xnx, 두 번째 파일에는 단 하나의 열 (첫 번째 파일의 B 항목이 있지만 순서는 다릅니다)이 있으며 해당 A 항목을 찾습니다. – Marco

0

난 당신이 쓰고 싶은 CSV 파일에 대한 A 열을 얻을 어디에 있는지,하지만의 가정하지 않는다 값은 순서대로 목록에 있습니다. As. 그런 다음 :

import csv 

d = {} 
with open('toread.csv') as f: 
    r = csv.reader(f) 
    for a, b in r: 
     d[b] = a 

with open('towrite.csv', 'w') as f: 
    w = csv.writer(f) 
    for a in As: 
     w.writerow(a, d[a]) 
+0

'a'가 다른 'b'값이 중복되면 작동하지 않습니다. – xnx

+0

물론, OP에서 표현한 문제와 호환되지 않는 것 같습니다. –

+0

동일한 문제, 내 첫 번째 및 두 번째 CSV 사이의 순서가 다릅니다. – Marco

관련 문제