1回の呼び出しでタイトルに従って文字列を分割したいとします。私は、リストの内包表記を使用して単純な構文を探していますが、私はまだそれを持っていない:re.splitを使用せずに文字列 "aabbcc" - > ["aa"、 "bb"、 "cc"]を分割します
s = "123456"
、結果は次のようになります。
["12", "34", "56"]
私はしたくないもの:
re.split('(?i)([0-9a-f]{2})', s)
s[0:2], s[2:4], s[4:6]
[s[i*2:i*2+2] for i in len(s)/2]
編集:
[OK]を、私は六角RGBを解析したかった[A]カラー(および可能であれば他の色/コンポーネント形式)を使用して、すべてのコンポーネントを抽出します。最速のアプローチは、スヴェン・marnachから最後になると思われる :
スヴェン-marnachはxrange:ループあたり0.883マイクロ秒
python -m timeit -s 's="aabbcc";' '[int(s[i:i+2], 16)/255. for i in xrange(0, len(s), 2)]'
ペア/ ITER:ループ
あたり1.38マイクロ秒python -m timeit -s 's="aabbcc"' '["%c%c" % pair for pair in zip(* 2 * [iter(s)])]'
正規表現:ループあたり2.55マイクロ秒
python -m timeit -s 'import re; s="aabbcc"; c=re.compile("(?i)([0-9a-f]{2})"); split=re.split' '[int(x, 16)/255. for x in split(c, s) if x != ""]'
なぜあなたは正規表現を使用することはできませんか? – BoltClock
"aaabbb"を '[" aaa "、" bbb "]'または '[" aa "、" ab "、" bb "]'に分割する必要がありますか?あなたが与えたサンプル実装、特に最後の実装が気に入らないのはなぜですか? –
私は正規表現以外のソリューション(2番目または3番目)に行くだろう...最後の1つはリストの理解です。 –