Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

円周率一万桁に0~9がそれぞれ何個含まれるか調べる

円周率一万桁に0~9がそれぞれ何個含まれるか調べます。 こちらのサイト(円周率.jp >> 円周率の値 1万桁まで)から円周率1万桁をスクレイピングで取得し、.count()メソッドで各数字の出現回数を求めます。

使った関数
  • requests.get() : Responseオブジェクトの取得
  • .count() : 文字列の出現回数を求める
環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
コード
from bs4 import BeautifulSoup as bs  # BeautifulSoupのインポート
import requests  # requestsのインポート

url = "http://xn--w6q13e505b.jp/value/decimal.html"  # urlの指定
rs = requests.get(url)  # Responseオブジェクトの取得
rs.encoding = rs.apparent_encoding  # 取得したHTMLに含まれるテキスト情報から、文字コードを推定
soup = bs(rs.text, 'html.parser')  # BeautifulSoupオブジェクトの取得

# 一つ目の<pre>の文字列を取得、7文字目以降(小数部分)を抽出
pai_decimal = (soup.select_one('pre').string)[7:] 
# 0~9までの文字が何回現れるか表示
for i in range(10):
    num = str(i)
    print(i,pai_decimal.count(num))
実行結果

0 968
1 1026
2 1021
3 974
4 1012
5 1046
6 1021
7 970
8 948
9 1014

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村