2011-01-30 29 views
7

私はa1b2c30d40のような入力文字列を持っています。文字列をトークン化してa, 1, b, 2, c, 30, d, 40にしたいと思います。python文字列分割

私は各キャラクタを1つずつ読み込み、それをトークン化する必要があるかどうかを判断するために前のキャラクタを追跡できます(行の2桁はトークン化しないことを意味しますが)これをするの?

パターンに

答えて

13
>>> re.split(r'(\d+)', 'a1b2c30d40') 
['a', '1', 'b', '2', 'c', '30', 'd', '40', ''] 

:コメントが言うように、\d手段「試合1桁が」、+ので\d+は「できるだけ多くの桁と一致」を意味し、「一つ以上に一致する」という意味修飾子です。これはグループ()に入れられます。したがって、コンテキスト全体のパターンre.splitは、「この文字列をできるだけ多くの桁を区切り文字として分割し、さらに一致する区切り文字を結果に追加的に取り込む」という意味です。グループを省略すると、['a', 'b', 'c', 'd', '']になります。

+0

私は正規表現をよく理解していません。あなたは(\ d +)パターンの説明を書いても構いませんか? – Hery

+1

数字/連続した数字で分割します( '\ dは0-9、' + 'は1つ以上です)。 – delnan

+1

http://docs.python.org/library/re.html – Samizdis