1

正規表現を使用して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
4

2 に答える 2

7

はい、正規表現はこのための理想的なツールだと思います。

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))
于 2012-12-14T21:22:47.530 に答える
0

ジェネレータ式の数字以外を除外するだけです。

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]
于 2012-12-14T21:26:56.660 に答える