0

長さと値が異なる出力があり、そこから値を抽出したいと考えています。

これは私の出力です:

'+CPBR: 1,"111",129,"0|2|XX"^M'

この場合、「XX」を抽出したいのですが、

ただし、値が次の場合は「9X」を抽出します。

'+CPBR: 1,"111",129,"01|2|9X"^M'

これを行う良い方法を知っている人はいますか?

4

2 に答える 2

1
In [2]: a=r'+CPBR: 1,"111",129,"0|2|XX"^M'

In [3]: b=r'+CPBR: 1,"111",129,"01|2|9X"^M'

In [4]: a.split('|')[-1][0:2]
Out[4]: 'XX'

In [5]: b.split('|')[-1][0:2]
Out[5]: '9X'
于 2013-02-19T13:51:32.027 に答える
1

次のような正規表現を使用できます。

>>> string = '+CPBR: 1,"111",129,"0|2|XX"^M'
>>> import re
>>> re.search('\|([^|"]+)"',string).group(1)
'XX'
>>> string = '+CPBR: 1,"111",129,"0|2|9X"^M'
'9X'
>>> string = '+CPBR: 1,"111",129,"0|2|ABC"^M'
'ABC'

これは | の間のすべてに一致します。および " はどちらの文字も含まない (|")。

于 2013-02-19T13:50:29.787 に答える