2016-09-06 2 views
-2

文字の前に文字列を分割し、の後に文字を分割する方法は、文字です。例えば:文字の前後に文字列を分割する方法は?

x = '846a12' 

はどのようにして出力します:

z = ['846','a','12'] 

問題このケースでは、私は私の機能では、特定の文字(:「」上記の例では、特定の文字)を言及しています。入力が異なる文字(「b」としましょう)では、関数が失敗します。どのようにランダムな文字を扱うことができますか?

ありがとうございました。

+3

'「846a12'.partition(」A ')'? –

+0

あなたの例は "任意の文字"と何が関係していますか?たとえば、 '846a12b55'が['846'、 'a'、 '12'、 'b'、 '55']に変わったとしますか?あなたは、あなたが望む一般的な事例を適切に示すべきです。 –

答えて

0

あなたは、セパレータの複数のオカレンスがある場合のために、この種の問題を解決するためのitertoolsを使用することができ、例えば:

>>> import itertools as it 
>>> [''.join(x) for _, x in it.groupby('846a12', key=lambda c: c=='a')] 
['846', 'a', '12'] 
+0

本当ですか?これは、コメントの他の2つの解決策のいずれかと比較して、ひどい解決策です。それは読みにくく、効率が悪いと私は喜んで賭けているだろう。 –

+0

セパレータの出現が1つしかない場合、 're'ベースの解決策と比較してそれがひどいことはわかりません。 – AChampion

+0

いいえ、リンクされたdupeは、セパレータの複数回出現を処理します。 –

関連する問題