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