Python 在csv文件中合并选定的行/行
我需要将csv文件中的行(Python 在csv文件中合并选定的行/行,python,csv,python-2.7,Python,Csv,Python 2.7,我需要将csv文件中的行($GPGGA和$GPVTG)与python组合在一起,因此出现了问题。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.
$GPGGA
和$GPVTG
)与python组合在一起,因此出现了问题。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”)
我如何才能做到这一点?你说的联合收割机是什么意思?你能给出一个清晰的样本输入,然后给出你的预期输出;您描述的输出与您发布的示例的任何输入行都不匹配;所以很难知道你到底想要什么。请你重新检查一下你的代码是否有有效的缩进。例如,如果第行中的“$GPGGA”假定有一个缩进太多,而打印的缩进太少。应该修改
if
语句和print
语句的缩进。合并意味着根据表达式$GPGGA和$GPVTG将所选行写入新行。正如您在csv输入中看到的,它以$GPGGA开头,后跟$GPVTG行。现在输出与当前代码匹配,我也检查了缩进。缩进是顺便说一句。仍然被破坏,但无论如何:仍然不清楚“combine”是什么意思……还要注意,file
是python中的内置函数,不要将其用作变量名。非常感谢,这正是我要寻找的!
>>> 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')
>>>