-1

wikipedia.org からいくつかのデータを取得する必要があります。文字列 a = '4 200 000+ Articles' があり、int b = 4200000 を取得する必要があります。BS4 でこの文字列を取得し、int(a) で簡単に解析しようとしましたが、これは機能しません。私たちを手伝ってくれますか?

4

3 に答える 3

1

そのようなテキストから数値を取得するには、正規表現が必要です。

import re

int_numbers = re.compile('\d[\d ]*')

def extract_integer(text):
    value_match = int_numbers.search(text)
    if value_match:
        try:
            return int(value_match.group().replace(' ', ''))
        except ValueError:
            # failed to create an int, ignore
            pass

このパターンは、数字の後に 0 個以上の数字またはスペースが続くものと一致します。

デモ:

>>> a = '4 200 000+ articles'
>>> extract_integer(a)
4200000

入力テキストにそのような数値がすべて必要な場合は.finditer()、ジェネレーターを使用します。

def extract_integers(text):
    for value_match in int_numbers.finditer(text):
        try:
            yield int(value_match.group().replace(' ', ''))
        except ValueError:
            # failed to create an int, ignore
            pass

デモ:

>>> for i in extract_integers('4 300 123 times 42'):
...     print i
...
4300123
42
>>> list(extract_integers('4 300 123 times 42'))
[4300123, 42]
于 2013-04-14T12:49:29.683 に答える