正規表現を使用してPythonでテキストを数字でフィルタリングできることは知っていますが、それが最善の方法ですか?
文字列のリストがあるとします:
a="gamma function: 78"
b="factorial value: 120"
c="random number: 33"
次のことを行う良い機能はありますか?
for string in [a,b,c]:
return numbers(string)
78
120
33
はい、正規表現はこのための理想的なツールだと思います。
def numbers(s):
return int(re.search(r"\d+", s).group(0))
複数の数値を持つ文字列の場合:
def numbers(s):
return [int(match) for match in re.findall(r"\d+", s)]
あるいは
def numbers(s):
return (int(match) for match in re.finditer(r"\d+", s))
ジェネレータ式の数字以外を除外するだけです。
a="gamma function: 78"
b="factorial value: 120"
c="random number: 33"
numbers = []
for string in [a,b,c,]:
numbers.append( int("".join(char for char in string if char.isdigit())))
これをコンソールに貼り付けると、次のようになります。
>>> numbers
[78, 120, 33]