2017-09-14 7 views
3

私は文字列があると言うことができます。スプリット文字列Pythonのインジケータが変化する

a = '[email protected]@@@@@a2&&&&&&a3::::' 

は、それが自然で分割:私はsplit機能を使用したい

['!!!!!!','@@@@@@','&&&&&&','::::'] 

にA1、A2、A3の、何かのように:

>>> a.split('a*') 

*は、それはdoesnのことを示し、 aの後にどんなキャラクターが来るか。これを行う即時の方法はありますか?モジュールreで、正規表現を使用することにより

+0

[Python:特定のパターンで分割する]の複製があります(https://stackoverflow.com/questions/14814186/python-splitting-by-certain-pattern) –

+0

本当に 'a'または数字だけの後の文字ですか? – Toto

答えて

0

、あなたは次のように試すことができます。

a = re.split(r'a1|a2|a3','[email protected]@@@@@a2&&&&&&a3::::') 

import re 
a = re.split(r'a\d','[email protected]@@@@@a2&&&&&&a3::::') 

あなたの分割キーでより具体的にしたい場合は、これを試してください必要に応じてカスタム条件を作成します。

0

Menglongのソリューション@ほど効率的ではありませんが、あなたが技術的にreをインポートせずに、単にリストし、文字列操作でそれを行うことができます:

>>> a = '[email protected]@@@@@a2&&&&&&a3::::' 
>>> s = a.split('a') 
>>> s[:1] + [x[1:] for x in s[1:] if x] 
['!!!!!!', '@@@@@@', '&&&&&&', '::::'] 

この作品あなたが'a'、すべてのの最初の文字に分割した場合ので、最初の後のセグメントは取り除きたい*文字になります。

この解決法は、私が運動として行ったことは好ましくありません。