2017-01-19 5 views
5

私が書いているこのプログラムは、異なるサイズの文字列と異なる文字サイズの文字列を保持する異なる数の括弧を受け取ります。
例えば:wysextplwqpvipxdv [srzvtwbfzqtspxnethm]
syqbzgtboxxzpwr私は括弧に含まれていないすべての部分の文字列を含むリストにこの文字列をスライスすることができるようにしたいです。 例えば:Python slicing - 角かっこで囲まれたものすべて

list[0] = wysextplwqpvipxdv 
list[1] =syqbzgtboxxzpwr  

私はstring.sliceを知っていると私はこれを読んでいる:Explain Python's slice notation
はまだ私は、コードにこれを入れに道のトラブル考え方を持っています。
括弧の数はわからず、文字列をリストにまとめることが難しいという課題がありました。あなたのブラケットに

+1

私はあなたがほしいと思うスライシングはないと思います。私は正規表現を 're'パッケージで調べます。 – Mikk

+3

入れ子になった括弧はありますか? –

答えて

11

使用re.split(非欲張り)正規表現:

import re 

s = "wysextplwqpvipxdv[srzvtwbfzqtspxnethm]syqbzgtboxxzpwr" 

toks = re.split("\[.*?\]",s) 

print(toks) 

結果:

['wysextplwqpvipxdv', 'syqbzgtboxxzpwr'] 

警告:括弧が入れ子になっている場合、これは動作しません。この場合、pyparsingのようなより複雑なパーサを使用する必要があります。

EDIT:この場合、括弧の外側のレベルしか考慮していないため、正規表現でネスト管理は可能です。 regex to get all text outside of bracketsの新しい回答の1つはそれを行います。

+1

ありがとうございました!あなたは私を助けました。私は再ライブラリを知らなかった。私は今それを勉強します –

関連する問題