2013-07-15 1 views
0

CSV 파일 내에서 파이썬으로 행 ($GPGGA$GPVTG)을 결합해야하는데 문제가 있습니다. CSV 파일은 다음과 같습니다CSV 파일 내에서 선택된 행/열 결합

~11:16:04.831,$GPGGA,091606.00,5149.28020915,N,01140.54074205,E 
~11:16:04.861,$GPVTG,40.8,T,,,000.05,N,000.09,K,D*75 
~11:16:05.833,$GPGGA,091607.00,5149.28020818,N,01140.54074319,E 
~11:16:05.863,$GPVTG,40.8,T,,,000.01,N,000.01,K,D*79 

내가

eingabe = sys.argv[1] 
with open(eingabe, "rb") as file: 
    datareader = csv.reader(file) 
    for row in datareader: 
     if "$GPGGA" in row: 
      col1 = row[0], row[1], row[3], row[5] 
     if "$GPVTG" in row: 
      col2 = row[0], row[1], row[2] 
     print col1 + col2 

결과는 최종 라인으로했지만, 나는 그들 모두를 필요로

('가 ~ 11 : 16 : 08.827 ','$ GPGGA ','5149.28021200 ','01140.54075064 ','~ 11 : 16 : 08.867 ','$ GPVTG ', '40 .8')

어떻게 이것을 달성 가야합니까?

+1

결합 할 때 무엇을 의미합니까? 명확한 샘플 입력과 예상 출력을 줄 수 있습니까? 설명하는 출력이 게시 한 샘플의 입력 행과 일치하지 않습니다. 그래서 당신이 결국 원하는 것을 알기가 어렵습니다. –

+0

유효한 들여 쓰기를 위해 코드를 다시 확인해 주실 수 있습니까? 예를 들어,''if '$ GPGGA in row''는 아마도 하나의 들여 쓰기를 너무 많이하고 너무 적은 것을 인쇄합니다. – jsalonen

+0

'if' 문과'print' 문의 들여 쓰기를 수정해야합니다. – waitingkuo

답변

0
>>> with open('1.csv') as file: 
...  reader = csv.reader(file) 
...  col1s = []; col2s = [] 
...  for row in reader: 
...    if "$GPGGA" in row: 
...      col1s.append((row[0], row[1], row[2], row[5])) 
...    elif "$GPVTG" in row: 
...      col2s.append((row[0], row[1], row[2])) 
...  for each in zip(col1s, col2s): 
...    print each[0] + each[1] 
... 
('~11:16:04.831', '$GPGGA', '091606.00', '01140.54074205', '~11:16:04.861', '$GPVTG', '40.8') 
('~11:16:05.833', '$GPGGA', '091607.00', '01140.54074319', '~11:16:05.863', '$GPVTG', '40.8') 
>>> 
+0

고마워,이 정확히 내가 뭘 찾고 있었어! – dassau