一連の質問と回答がありますが、質問ごとに分けたいと思います。
s = 'Q1 blah1 Ans BLAH1 Q2 blah2 Ans BLAH2'
re.split('(Q\d.*?)Q\d', s)
結果:
['', 'Q1 blah1 Ans BLAH1 ', ' blah2 Ans BLAH2']
「Q#」で始まり、その後に別の「Q#」または行の終わりが続く部分をキャプチャしたいと思います。だから私はこれを使ってみました:
re.split('(Q\d.*?)Q\d|$', s)
['', 'Q1 blah1 Ans BLAH1 ', ' blah2 Ans BLAH2']
この:
re.split('(Q\d.*?)(Q\d|$)', s)
['', 'Q1 blah1 Ans BLAH1 ', 'Q2', ' blah2 Ans BLAH2']
しかし、彼らは私に望ましい結果を与えません。の不適切な使用法のため、最初のケースでは機能しませんが|
、修正方法がわかりません。2番目のケースでは、Q2
はと一緒にキャプチャされませんblah2 Ans BLAH2
。
編集:
必要な出力:
['', 'Q1 blah1 Ans BLAH1 ', 'Q2 blah2 Ans BLAH2']
次のパターンで分割してみてください。
\s+(?=Q\d+)
これは、次の質問が開始されていることを表明しますが、消費しないポジティブ先読みアサーションを使用します。
s = 'Q1 blah1 Ans BLAH1 Q2 blah2 Ans BLAH2'
print re.split('\s+(?=Q\d+)', s)
['Q1 blah1 Ans BLAH1', 'Q2 blah2 Ans BLAH2']
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加