-1

以下の方法で文字列内の数字を区切る最も簡単な方法(おそらく正規表現)は何だろうと思っていました。例:"abc12de34f5" 宛先:["abc", "12", "de", "34", "f", "5"]

ただし、文字列に結合記号がある場合は、次のように区切ります: 例: "abc1,2de3.4f5" to:["abc", "1,2", "de", "3.4", "f", "5"]

提案やコメントをありがとう

4

2 に答える 2

5
>>> import re
>>> s = "abc12de34f5"
>>> re.findall(r'[\d\W]+|[a-zA-Z]+', s)
['abc', '12', 'de', '34', 'f', '5']
>>> t = "abc1,2de3.4f5"
>>> re.findall(r'[\d\W]+|[a-zA-Z]+', t)
['abc', '1,2', 'de', '3.4', 'f', '5']
于 2013-02-22T10:24:25.190 に答える
2

itertools.groupby を使用した非正規表現ソリューション

>>> st = "abc1,2de3.4f5"
>>> [''.join(v) for _, v in groupby(st,key = str.isalpha)]
['abc', '1,2', 'de', '3.4', 'f', '5']
>>> st = "abc12de34f5"
>>> [''.join(v) for _, v in groupby(st,key = str.isalpha)]
['abc', '12', 'de', '34', 'f', '5']
于 2013-02-22T10:35:32.607 に答える