3

CASからの出力があり、それらを3つに分割したいのですが、出力の例を次に示します。

' 1+2;\r\n\r(%o2)                                  3\r\n(%i3) '
'?\r\n\r\n\rpos;\r\n\r(%o1)                                  0\r\n(%i2) '

出力を3つの部分に分けたいと思います。

  1. 文字列の先頭から「;」までの部分 セミコロン。
  2. セミコロン後から決勝 直前までの部分\r\n\(%i\d+\)
  3. それ自体である最後の部分、すなわち。\r\n\(%i\d+\)最後の部分では常に一人でいること。

それらをどのように分離しますか?そのためのコードを作成するのに問題があります。

編集:セクションを分離した後もセミコロンを保持したいのですが。

4

2 に答える 2

2

これはあなたが要求したことをするはずです:

re.findall('^([^;]+);(.*)(\r\n\(%i\d+\).+)$', text, re.S)

最初のグループにセミコロンを含めるには、それをグループ化括弧に追加するだけです。

re.findall('^([^;]+;)(.*)(\r\n\(%i\d+\).+)$', text, re.S)
于 2013-03-25T16:10:19.590 に答える
1

このために正規表現が必要かどうかはわかりません。

In [31]: s = '?\r\n\r\n\rpos;\r\n\r(%o1)                                  0\r\n(%i2) '

In [32]: p1, _, p23 = s.partition(';')

In [33]: p2, _, p3 = p23.rpartition('\r\n')

In [34]: p1, p2, p3
Out[34]: ('?\r\n\r\n\rpos', '\r\n\r(%o1)                                  0', '(%i2) ')
于 2013-03-25T15:45:09.563 に答える