数字を取り出す
とりあえずメモ程度に。あとで書く。
- ref:http://www.kt.rim.or.jp/~kbk/zakkicho/08/zakkicho0807a.html#D20080707-5
- ref:http://d.hatena.ne.jp/s-n-k/20080630/1214836026
数字を抜くだけなら簡単だよね。
SEP = re.compile(r'[^\d]+') def embedded_numbers1(s): return [int(x) for x in SEP.split(s) if x] DIGITS = re.compile(r'\d+') def embedded_numbers2(s): return [int(x) for x in DIGITS.findall(s)]
なんか期待されてもあんまりおもしろいのは思い浮かばない。仕方がないので代入なしという縛りで。
import re PAT = re.compile(r'([^\d]*)(\d+)([^\d]*)') def embedded_numbers3(s): def f(lst, m): return lst[:-1] + [lst[-1] + m.group(1), int(m.group(2)), m.group(3)] return reduce(f, PAT.finditer(s), ['']) NONDIGITS = re.compile(r'^[^\d]*') PAT2 = re.compile(r'(\d+)([^\d]*)') def embedded_numbers4(s): return sum( ([int(m[0]), m[1]] for m in PAT2.findall(s)), [NONDIGITS.match(s).group()])