2

次のような文字列があり、次のようape4banana3に分割します。

>>>re.split('([1-5]?)|\s', "ape4banana3")
['ape', '4', 'banana', '3', '']

''結果に末尾が表示されるのはなぜですか? よりスマートな正規表現を書くことでそれを取り除くことはできますか?

サイドノート:文字列が次のようになることがあるため、正規表現には代替がありape4 banana3ます。その後、空白を失いたいと思います。

追加のクレジット: 代わりにこの結果を取得する方法はありますか? ['ape4', 'banana3']?

4

2 に答える 2

4

数字を分割しているため、余分なスペースが表示されているため、最後の数字の後に空の文字列が表示されます。

追加のクレジットに関しては、これが最も簡単な解決策のようです。

>>> re.findall(r"([a-zA-Z]+[1-5]+)", "ape4banana3")
['ape4', 'banana3']
>>> re.findall(r"([a-zA-Z]+[1-5]+)", "ape4 banana3")
['ape4', 'banana3']

[a-zA-Z]ユースケースに応じて、より具体的なパターンまたはより具体的でないパターンに置き換える必要がある場合があります。この正規表現は、ここに投稿した文字列のみに基づいています。

于 2013-10-12T00:40:30.390 に答える
0

これは、3 が最後にバナナと空の弦を分割しているためです。

2 番目の結果については、\s で分割できますか?

編集なるほど、スペースは常にそこにあるとは限りません。

次のように一致させることができます:

 ([A-Za-z].?[1-5])([A-Za-z].?[1-5])

括弧を使用して、囲まれた各セクションを、独自の配列セルとして含まれるグループに入れます。

于 2013-10-12T00:38:23.253 に答える