行いたいこと
正規表現で定義した特定文字列を含む行を削除(""に置換)したい。
今の状況
定義した正規表現はsearch関数では正しく作動するので問題無いと思います。
python
1import re 2 3line1 = "$GAGSV,1,1,00,2*76" 4line2 = "$GBGSV,1,1,02,13,41,247,18,21,35,308,21,1*76" 5line3 = "$GNGGA,014106.00,3955.4429013,N,12312.0688793,E,2,08,4.36,49.675,M,28.378,M,1.0,0000*5B" 6line4 = "$GNGLL,3955.4429013,N,12312.0688793,E,014106.00,A,D*71" 7 8linelist = [line1,line2,line3,line4] 9 10pattern = re.compile(r'^(?!.*(,N,)).*$') 11 12for i in linelist: 13 print(bool(pattern.search(i))) 14 15# 出力は狙い通り 16# line1 -> True 17# line2 -> True 18# line3 -> False 19# line4 -> False
しかし、sub関数が出力イメージ通りにならず、全く削除されません。
python
1csvtext = line1 + "\n" + line2 + "\n" + line3 + "\n" + line4 2 3t = re.sub(pattern,"",csvtext) 4print(t) 5 6# 出力結果 7# $GAGSV,1,1,00,2*76 8# $GBGSV,1,1,02,13,41,247,18,21,35,308,21,1*76 9# $GNGGA,014106.00,3955.4429013,N,12312.0688793,E,2,08,4.36,49.675,M,28.378,M,1.0,0000*5B 10# $GNGLL,3955.4429013,N,12312.0688793,E,014106.00,A,D*71 11 12# 出力イメージ(行いたい出力) 13# (削除) 14# (削除) 15# $GNGGA,014106.00,3955.4429013,N,12312.0688793,E,2,08,4.36,49.675,M,28.378,M,1.0,0000*5B 16# $GNGLL,3955.4429013,N,12312.0688793,E,014106.00,A,D*71
色々調べたのですが、八方塞がりです。ご教授お願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/05 15:10 編集
2021/01/05 15:10