2013-07-15 37 views
0

我需要將csv文件中的行($GPGGA$GPVTG)與python合併在一起,並且有問題。 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