タイトルの通り、  
文字、数字が混ざる文章から文字は１文字ずつ、数字は次に文字が出るまでをひとまとまりとして処理したいです。  
コードはpythonです。

例えば、

```

    def printer(letter):
        # 本来は何らかの処理
        print(letter)
    
    sentence = "きょうは19あしたは20"
    for letter in sentence:
        if not letter.isdecimal():
            printer(letter)
        else:
            printer(letter)
    
```

だと、

```

    き
    ょ
    う
    は
    1
    9
    あ
    し
    た
    は
    2
    0
    
```

となりますが、

```

    き
    ょ
    う
    は
    19
    あ
    し
    た
    は
    20
    
```

と処理されるような方法を知りたいです。
CC BY-SA 4.0
2018-09-18T22:31:15.160
48520
2018-09-19T04:18:51.187
30159
question
python
pythonで文字と数字が混ざる文章から、文字は１文字ずつ、数字はまとまりで頭から順番に処理する方法
例えば正規表現を使うとこんな感じでできます。(python3です。)

```

    import re
    
    def printer(letter):
        # 本来は何らかの処理
        print(letter)
    
    sentence = "きょうは19あしたは20"
    
    for match in re.findall('[0-9]+|[^0-9]', sentence):
        printer(match)
    
```

結果:

>
```

>     き
>     ょ
>     う
>     は
>     19
>     あ
>     し
>     た
>     は
>     20
>  
```
CC BY-SA 4.0
2018-09-18T23:54:46.723
48521
2018-09-18T23:54:46.723
13972
48520
answer
`re.split()` を使ってみました。

```

    import re
    
    def printer(letter):
      # 本来は何らかの処理
      print(letter)
    
    sentence = "きょうは19あしたは20"
    ##sentence = "きょうは１９あしたは２０"
    [printer(c) for c in re.split('(\d+|\D)', sentence) if c not in [None, '']]
    
```

ちなみに、正規表現として `\d` を使っていますけれども、(ご存知かもしれませんが) python3 では `U+FF10` 〜
`U+FF19`(俗に言う「全角」文字)にもマッチします(`re.split()` の引数に `flags = re.ASCII`
を追加すればマッチしなくなります)。
CC BY-SA 4.0
2018-09-19T04:18:51.187
48530
2018-09-19T04:18:51.187
48520
answer