Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

言語処理100本ノック2020(Rev1)をやってみました。

Posted at

第3章: 正規表現

この章では、以下のデータを使用します。

jawiki-country.json.gz
Wikipediaの記事をJSON形式で書き出したファイル

またここでは、Google Colaboratoryを使用しています。

20. JSONデータの読み込み

Wikipedia記事のJSONファイルを読み込み,「イギリス」に関する記事本文を表示せよ.問題21-29では,ここで抽出した記事本文に対して実行せよ.

PandasのDataFrameには、JSON形式のファイルを読み込むための read_json()メソッドが用意されているので、これを使用します。

【オプション】
path_or_buf:取得元のパス
orient:JSONファイルの形式 「values」は値の配列
lines:Trueのとき、行ごとにJSONファイルを読み込む。
compression:JSONファイルの圧縮形式

import pandas as pd

datas = pd.read_json(path_or_buf="https://nlp100.github.io/data/jawiki-country.json.gz", orient="values", lines=True, compression="gzip")
print(datas.head(5))

data = (datas[datas['title']=='イギリス']['text']).values
print(str(type(data)))
print(str(data.shape))
print(data[0][:200]) # ndarrayの要素の中身の文字列を200文字だけ出力

<出力>

    title                                               text
0    エジプト  {{otheruses|主に現代のエジプト・アラブ共和国|古代|古代エジプト}}\n{{基礎...
1  オーストリア  {{基礎情報 国\n|略名 = オーストリア\n|日本語国名 = オーストリア共和国\n|公...
2  インドネシア  {{基礎情報 国\n| 略名 =インドネシア\n| 日本語国名 =インドネシア共和国\n| ...
3     イラク  {{複数の問題\n| 参照方法 = 2011年8月\n| 独自研究 = 2012年10月\n...
4     イラン  {{半保護}}\n{{未検証|date=2010年3月}}\n{{基礎情報 国\n | 略名...
<class 'numpy.ndarray'>
(1,)
{{redirect|UK}}
{{redirect|英国|春秋時代の諸侯国|英 (春秋)}}
{{Otheruses|ヨーロッパの国|長崎県・熊本県の郷土料理|いぎりす}}
{{基礎情報 国
|略名  =イギリス
|日本語国名 = グレートブリテン及び北アイルランド連合王国
|公式国名 = {{lang|en|United Kingdom of Great Britain and Norther

21. カテゴリ名を含む行を抽出

記事中でカテゴリ名を宣言している行を抽出せよ.

wikipediaのデータ構造のカテゴリに関しては、wikipediaのヘルプを参照するとよいです。
wikipedia Help:カテゴリ

# 20の続き
import re

lines=data[0].split('\n') # 行ごとに分割してリストを作成
catlines=[]
for line in lines:
  # 正規表現でカテゴリ行を識別。
  # カテゴリは行先頭が「[[Category:」で始まり、行末尾が「]]」で終わる
  if re.match(r'^\[\[Category:.+\]\]$',line):
    catlines.append(line)
print(catlines[:5])

<出力>

['[[Category:イギリス|*]]', '[[Category:イギリス連邦加盟国]]', '[[Category:英連邦王国|*]]', '[[Category:G8加盟国]]', '[[Category:欧州連合加盟国|元]]']

22. カテゴリ名の抽出

記事のカテゴリ名を(行単位ではなく名前で)抽出せよ.

カテゴリの定義は
① [[Catehory:カテゴリ名]]
あるいは、
② [[Category:カテゴリ名|ソートキー]]
であるので、正規表現を用いてカテゴリ名だけを抽出します。

# 21のつづき
category=[]
for line in catlines:
  w = re.search(r'\:.*\|', line) # 上記②のパターン
  if w!=None:
    # group()でマッチした文字列を取得。スライスで文字列前後に含まれる記号”:”,”|”を削除する。
    category.append(w.group()[1:-1])
  else:
    w = re.search(r'\:.*\]', line) # 上記①のパターン
    if w!=None:
      # スライスで文字列前後に含まれる記号”:”,”]]”を削除する。
      category.append(w.group()[1:-2])
print(category)

<出力>

['イギリス', 'イギリス連邦加盟国', '英連邦王国', 'G8加盟国', '欧州連合加盟国', '海洋国家', '現存する君主国', '島国', '1801年に成立した国家・領域']

23. セクション構造

記事中に含まれるセクション名とそのレベル(例えば”== セクション名 ==”なら1)を表示せよ.

wikipediaのセクションの定義に関しては、以下を参照してください。

wikipedia Help:セクション

== セクションの見出し ==
=== サブセクションの見出し ===
==== サブサブセクションの見出し ====

# 21のつづき
dict={}
for line in lines:
  # 行頭と行末に"=="があればカテゴリ行
  if re.match(r'^==.+==$', line):
    cnt=0
    name=""
    
    for c in list(line): # 行を1文字ずつループさせる
      if c=="=":
        if name!="":
          break
        # セクション名の前にある”=”をカウント
        cnt+=1
      else:
        # "="以外はセクション名
        name+=c
    dict[name] = (cnt-1)

print(dict)

<出力>

{'国名': 1, '歴史': 1, '地理': 1, '主要都市': 2, '気候': 2, '政治': 1, '元首': 2, '法': 2, '内政': 2, '地方行政区分': 2, '外交・軍事': 2, '経済': 1, '鉱業': 2, '農業': 2, '貿易': 2, '不動産': 2, 'エネルギー政策': 2, '通貨': 2, '企業': 2, '通信': 3, '交通': 1, '道路': 2, '鉄道': 2, '海運': 2, '航空': 2, '科学技術': 1, '国民': 1, '言語': 2, '宗教': 2, '婚姻': 2, '移住': 2, '教育': 2, '医療': 2, '文化': 1, '食文化': 2, '文学': 2, '哲学': 2, '音楽': 2, 'ポピュラー音楽': 3, '映画': 2, 'コメディ': 2, '国花': 2, '世界遺産': 2, '祝祭日': 2, 'スポーツ': 2, 'サッカー': 3, 'クリケット': 3, '競馬': 3, 'モータースポーツ': 3, '野球': 3, ' カーリング ': 3, ' 自転車競技 ': 3, '脚注': 1, '関連項目': 1, '外部リンク': 1}

24. ファイル参照の抽出

記事から参照されているメディアファイルをすべて抜き出せ.

ファイル参照に記述方法は以下を参照してください。
wikipedia Help:画像の表示

[[ファイル:ファイル名|オプション]]

の形式を探してファイル名のみを抽出します。

# 20のつづき
# ”[[ファイル:ファイル名|”と”[[ファイル:ファイル名]”をすべて検索
fileref=re.findall(r'\[\[ファイル:[^\]\|]*\||\[\[ファイル:[^\]]*\]', data[0])
for w in fileref:
  # 検索ヒットした文字列から先頭の”[[ファイル:”と末尾の"|","]"を削って表示
  print(w[7:-1]) 

<出力>

Royal Coat of Arms of the United Kingdom.svg
United States Navy Band - God Save the Queen.ogg
Descriptio Prime Tabulae Europae.jpg
Lenepveu, Jeanne d'Arc au siège d'Orléans.jpg
London.bankofengland.arp.jpg
Battle of Waterloo 1815.PNG
Uk topo en.jpg
BenNevis2005.jpg
Population density UK 2011 census.png
2019 Greenwich Peninsula & Canary Wharf.jpg
Birmingham Skyline from Edgbaston Cricket Ground crop.jpg
Leeds CBD at night.jpg
Glasgow and the Clyde from the air (geograph 4665720).jpg
Palace of Westminster, London - Feb 2007.jpg
Scotland Parliament Holyrood.jpg
Donald Trump and Theresa May (33998675310) (cropped).jpg
Soldiers Trooping the Colour, 16th June 2007.jpg
City of London skyline from London City Hall - Oct 2008.jpg
Oil platform in the North SeaPros.jpg
Eurostar at St Pancras Jan 2008.jpg
Heathrow Terminal 5C Iwelumo-1.jpg
Airbus A380-841 G-XLEB British Airways (10424102995).jpg
UKpop.svg
Anglospeak.svg
Royal Aberdeen Children's Hospital.jpg
CHANDOS3.jpg
The Fabs.JPG
Wembley Stadium, illuminated.jpg

25. テンプレートの抽出

記事中に含まれる「基礎情報」テンプレートのフィールド名と値を抽出し,辞書オブジェクトとして格納せよ.

「基礎情報」テンプレートに関しては以下を参照します。

wikipedia 基礎情報テンプレート
wikipedia Help:テンプレート

基礎情報テンプレートは
"{{基礎情報.名前|引数1|引数2|.....}}"

"{{基礎情報.名前|テンプレート変数1=引数1|テンプレート変数2=引数2|.....}"
の形式になっています。

# 21のつづき
import numpy as np

tempFieldDict={}
bInTemplate=False
bValue=False
val=""
for i, line in enumerate(lines):# 1行ずつループ
  if bInTemplate:  # 基礎情報テンプレート定義内の場合 
    bKey=False
    # 基礎情報テンプレートの終了判定
    if re.match(r'^\}\}', line):
      bInTemplate=False
      bValue=False
      continue
    # パラメータの開始判定
    if re.match(r'^\|', line):
      bKey=True
      if bValue==True:
        tempFieldDict[key.strip()]=val # キーと値のペアを辞書型に登録。
      bValue=False
      val=""
      key=""

    for s in list(line): # 行を1文字ずつループ
      if bKey and s!="|": # キーモード中に”=”が出現したら値モードに変更してコンティニュー。
        if s=='=':
          bKey=False
          bValue=True
          continue
        key+=s       # キー名に文字を追加
      elif bValue:
        val+=s
  else: # 基礎情報テンプレート定義外の場合
    # 基礎情報テンプレート開始であるか?
    if re.match(r'\{\{基礎情報.*', line):
      bInTemplate=True

#print(tempFieldDict)
for key,value in tempFieldDict.items():
  print("{0}:{1}".format(key,value))

<出力>

略名:イギリス
日本語国名: グレートブリテン及び北アイルランド連合王国
公式国名: {{lang|en|United Kingdom of Great Britain and Northern Ireland}}<ref>英語以外での正式国名:<br />*{{lang|gd|An Rìoghachd Aonaichte na Breatainn Mhòr agus Eirinn mu Thuath}}([[スコットランド・ゲール語]])*{{lang|cy|Teyrnas Gyfunol Prydain Fawr a Gogledd Iwerddon}}([[ウェールズ語]])*{{lang|ga|Ríocht Aontaithe na Breataine Móire agus Tuaisceart na hÉireann}}([[アイルランド語]])*{{lang|kw|An Rywvaneth Unys a Vreten Veur hag Iwerdhon Glédh}}([[コーンウォール語]])*{{lang|sco|Unitit Kinrick o Great Breetain an Northren Ireland}}([[スコットランド語]])**{{lang|sco|Claught Kängrick o Docht Brätain an Norlin Airlann}}、{{lang|sco|Unitet Kängdom o Great Brittain an Norlin Airlann}}(アルスター・スコットランド語)</ref>
国旗画像: Flag of the United Kingdom.svg
国章画像: [[ファイル:Royal Coat of Arms of the United Kingdom.svg|85px|イギリスの国章]]
国章リンク:([[イギリスの国章|国章]])
標語: {{lang|fr|[[Dieu et mon droit]]}}<br />([[フランス語]]:[[Dieu et mon droit|神と我が権利]])
国歌: [[女王陛下万歳|{{lang|en|God Save the Queen}}]]{{en icon}}<br />''神よ女王を護り賜え''<br />{{center|[[ファイル:United States Navy Band - God Save the Queen.ogg]]}}
地図画像: Europe-UK.svg
位置画像: United Kingdom (+overseas territories) in the World (+Antarctica claims).svg
公用語: [[英語]]
首都: [[ロンドン]](事実上)
最大都市: ロンドン
元首等肩書: [[イギリスの君主|女王]]
元首等氏名: [[エリザベス2世]]
首相等肩書: [[イギリスの首相|首相]]
首相等氏名: [[ボリス・ジョンソン]]
他元首等肩書1: [[貴族院 (イギリス)|貴族院議長]]
他元首等氏名1: [[:en:Norman Fowler, Baron Fowler|ノーマン・ファウラー]]
他元首等肩書2: [[庶民院 (イギリス)|庶民院議長]]
他元首等氏名2: {{仮リンク|リンゼイ・ホイル|en|Lindsay Hoyle}}
他元首等肩書3: [[連合王国最高裁判所|最高裁判所長官]]
他元首等氏名3: [[:en:Brenda Hale, Baroness Hale of Richmond|ブレンダ・ヘイル]]
面積順位: 76
面積大きさ: 1 E11
面積値: 244,820
水面積率: 1.3%
人口統計年: 2018
人口順位: 22
人口大きさ: 1 E7
人口値: 6643万5600<ref>{{Cite web|url=https://www.ons.gov.uk/peoplepopulationandcommunity/populationandmigration/populationestimates|title=Population estimates - Office for National Statistics|accessdate=2019-06-26|date=2019-06-26}}</ref>
人口密度値: 271
GDP統計年元: 2012
GDP値元: 1兆5478億<ref name="imf-statistics-gdp">[http://www.imf.org/external/pubs/ft/weo/2012/02/weodata/weorept.aspx?pr.x=70&pr.y=13&sy=2010&ey=2012&scsm=1&ssd=1&sort=country&ds=.&br=1&c=112&s=NGDP%2CNGDPD%2CPPPGDP%2CPPPPC&grp=0&a=IMF>Data and Statistics>World Economic Outlook Databases>By Countrise>United Kingdom]</ref>
GDP統計年MER: 2012
GDP順位MER: 6
GDP値MER: 2兆4337億<ref name="imf-statistics-gdp" />
GDP統計年: 2012
GDP順位: 6
GDP値: 2兆3162億<ref name="imf-statistics-gdp" />
GDP/人: 36,727<ref name="imf-statistics-gdp" />
建国形態: 建国
確立形態1: [[イングランド王国]]/[[スコットランド王国]]<br />(両国とも[[合同法 (1707年)|1707年合同法]]まで)
確立年月日1: 927年/843年
確立形態2: [[グレートブリテン王国]]成立<br />(1707年合同法)
確立年月日2: 1707年{{0}}5月{{0}}1日
確立形態3: [[グレートブリテン及びアイルランド連合王国]]成立<br />([[合同法 (1800年)|1800年合同法]])
確立年月日3: 1801年{{0}}1月{{0}}1日
確立形態4: 現在の国号「'''グレートブリテン及び北アイルランド連合王国'''」に変更
確立年月日4: 1927年{{0}}4月12日
通貨: [[スターリング・ポンド|UKポンド]] (£)
通貨コード: GBP
時間帯: ±0
夏時間: +1
ISO 3166-1: GB / GBR
ccTLD: [[.uk]] / [[.gb]]<ref>使用は.ukに比べ圧倒的少数。</ref>
国際電話番号: 44

26. 強調マークアップの除去

25の処理時に,テンプレートの値からMediaWikiの強調マークアップ(弱い強調,強調,強い強調のすべて)を除去してテキストに変換せよ

wikipedia Help:早見表
を参照すると、強調表示は以下のようになっている。

種類 入力内容
他との区別(斜体) ''他との区別''
強調(太字) '''強調'''
斜体と強調 '''''斜体と強調'''''
# 25のつづき
tempFieldDict1={}
for key, val in tempFieldDict.items():
  val1 = val.replace("''''''","") # 強い強調を削除
  val1 = val1.replace("'''","")   # 強調を削除
  val1 = val1.replace("''","")    # 弱い強調を削除
  if val!=val1:
    print(val + " --> " + val1) # 変更された箇所のみ表示4
  tempFieldDict1[key]=val1

<出力>

 [[女王陛下万歳|{{lang|en|God Save the Queen}}]]{{en icon}}<br />''神よ女王を護り賜え''<br />{{center|[[ファイル:United States Navy Band - God Save the Queen.ogg]]}} -->  [[女王陛下万歳|{{lang|en|God Save the Queen}}]]{{en icon}}<br />神よ女王を護り賜え<br />{{center|[[ファイル:United States Navy Band - God Save the Queen.ogg]]}}
 現在の国号「'''グレートブリテン及び北アイルランド連合王国'''」に変更 -->  現在の国号「グレートブリテン及び北アイルランド連合王国」に変更

27. 内部リンクの除去

26の処理に加えて,テンプレートの値からMediaWikiの内部リンクマークアップを除去し,テキストに変換せよ

内部リンクは以下のような形式である。

[[記事名]]
[[記事名|表示文字]]
[[記事名#節名|表示文字]]

tempFieldDict2={}
for key, val in tempFieldDict1.items(): # パラメータ辞書から1要素ずつループ
  links = re.findall(r'\[\[[^\]]*\|', val) # ”[[リンク先記事名|”を取得。
  val1 = val
  for link in links:
    val1 = val.replace(link,"") # ”[[リンク先記事名|”を削除
  
  val1 = val1.replace("[[","")  # "[["を削除
  val1 = val1.replace("]]","")  # "]]"を削除
  if val!=val1:
    print(val + " --> " + val1)
  tempFieldDict2[key]=val1

<出力>

 {{lang|en|United Kingdom of Great Britain and Northern Ireland}}<ref>英語以外での正式国名:<br />*{{lang|gd|An Rìoghachd Aonaichte na Breatainn Mhòr agus Eirinn mu Thuath}}([[スコットランド・ゲール語]])*{{lang|cy|Teyrnas Gyfunol Prydain Fawr a Gogledd Iwerddon}}([[ウェールズ語]])*{{lang|ga|Ríocht Aontaithe na Breataine Móire agus Tuaisceart na hÉireann}}([[アイルランド語]])*{{lang|kw|An Rywvaneth Unys a Vreten Veur hag Iwerdhon Glédh}}([[コーンウォール語]])*{{lang|sco|Unitit Kinrick o Great Breetain an Northren Ireland}}([[スコットランド語]])**{{lang|sco|Claught Kängrick o Docht Brätain an Norlin Airlann}}、{{lang|sco|Unitet Kängdom o Great Brittain an Norlin Airlann}}(アルスター・スコットランド語)</ref> -->  {{lang|en|United Kingdom of Great Britain and Northern Ireland}}<ref>英語以外での正式国名:<br />*{{lang|gd|An Rìoghachd Aonaichte na Breatainn Mhòr agus Eirinn mu Thuath}}(スコットランド・ゲール語)*{{lang|cy|Teyrnas Gyfunol Prydain Fawr a Gogledd Iwerddon}}(ウェールズ語)*{{lang|ga|Ríocht Aontaithe na Breataine Móire agus Tuaisceart na hÉireann}}(アイルランド語)*{{lang|kw|An Rywvaneth Unys a Vreten Veur hag Iwerdhon Glédh}}(コーンウォール語)*{{lang|sco|Unitit Kinrick o Great Breetain an Northren Ireland}}(スコットランド語)**{{lang|sco|Claught Kängrick o Docht Brätain an Norlin Airlann}}、{{lang|sco|Unitet Kängdom o Great Brittain an Norlin Airlann}}(アルスター・スコットランド語)</ref>
 [[ファイル:Royal Coat of Arms of the United Kingdom.svg|85px|イギリスの国章]] -->  イギリスの国章
([[イギリスの国章|国章]]) --> (国章)
 {{lang|fr|[[Dieu et mon droit]]}}<br />([[フランス語]]:[[Dieu et mon droit|神と我が権利]]) -->  {{lang|fr|Dieu et mon droit}}<br />(フランス語:神と我が権利)
 [[女王陛下万歳|{{lang|en|God Save the Queen}}]]{{en icon}}<br />神よ女王を護り賜え<br />{{center|[[ファイル:United States Navy Band - God Save the Queen.ogg]]}} -->  God Save the Queen}}{{en icon}}<br />神よ女王を護り賜え<br />{{center|ファイル:United States Navy Band - God Save the Queen.ogg}}
 [[英語]] -->  英語
 [[ロンドン]](事実上) -->  ロンドン(事実上)
 [[イギリスの君主|女王]] -->  女王
 [[エリザベス2世]] -->  エリザベス2世
 [[イギリスの首相|首相]] -->  首相
 [[ボリス・ジョンソン]] -->  ボリス・ジョンソン
 [[貴族院 (イギリス)|貴族院議長]] -->  貴族院議長
 [[:en:Norman Fowler, Baron Fowler|ノーマン・ファウラー]] -->  ノーマン・ファウラー
 [[庶民院 (イギリス)|庶民院議長]] -->  庶民院議長
 [[連合王国最高裁判所|最高裁判所長官]] -->  最高裁判所長官
 [[:en:Brenda Hale, Baroness Hale of Richmond|ブレンダ・ヘイル]] -->  ブレンダ・ヘイル
 [[イングランド王国]]/[[スコットランド王国]]<br />(両国とも[[合同法 (1707年)|1707年合同法]]まで) -->  イングランド王国/スコットランド王国<br />(両国とも1707年合同法まで)
 [[グレートブリテン王国]]成立<br />(1707年合同法) -->  グレートブリテン王国成立<br />(1707年合同法)
 [[グレートブリテン及びアイルランド連合王国]]成立<br />([[合同法 (1800年)|1800年合同法]]) -->  グレートブリテン及びアイルランド連合王国成立<br />(1800年合同法)
 [[スターリング・ポンド|UKポンド]] (£) -->  UKポンド (£)
 [[.uk]] / [[.gb]]<ref>使用は.ukに比べ圧倒的少数。</ref> -->  .uk / .gb<ref>使用は.ukに比べ圧倒的少数。</ref>

28. MediaWikiマークアップの除去

27の処理に加えて,テンプレートの値からMediaWikiマークアップを可能な限り除去し,国の基本情報を整形せよ.

Mediawikiマークアップに関しては以下を参照した。
Mediawiki ヘルプ:書式整形

tempFieldDict3={}
for key, val in tempFieldDict2.items(): # パラメータの辞書型のデータを1レコードずつループ
  val1 = val
  # <ref></ref><br />等のタグを検索して削除
  tags = re.findall(r'(\<[a-z]+\>|\<[a-z]+\s\/\>|\<\/[a-z]+\>)', val)
  for tag in tags:
    val1 = val1.replace(tag, "")
  val1 = val1.replace("{{","") # ”{{”を削除
  val1 = val1.replace("}}","") # ”}}”を削除
  tempFieldDict3[key]=val1
  print("{0}:{1}".format(key,val1))

<出力>

略名:イギリス
日本語国名: グレートブリテン及び北アイルランド連合王国
公式国名: lang|en|United Kingdom of Great Britain and Northern Ireland英語以外での正式国名:*lang|gd|An Rìoghachd Aonaichte na Breatainn Mhòr agus Eirinn mu Thuath(スコットランド・ゲール語)*lang|cy|Teyrnas Gyfunol Prydain Fawr a Gogledd Iwerddon(ウェールズ語)*lang|ga|Ríocht Aontaithe na Breataine Móire agus Tuaisceart na hÉireann(アイルランド語)*lang|kw|An Rywvaneth Unys a Vreten Veur hag Iwerdhon Glédh(コーンウォール語)*lang|sco|Unitit Kinrick o Great Breetain an Northren Ireland(スコットランド語)**lang|sco|Claught Kängrick o Docht Brätain an Norlin Airlann、lang|sco|Unitet Kängdom o Great Brittain an Norlin Airlann(アルスター・スコットランド語)
国旗画像: Flag of the United Kingdom.svg
国章画像: イギリスの国章
国章リンク:(国章)
標語: lang|fr|Dieu et mon droit(フランス語:神と我が権利)
国歌: God Save the Queenen icon神よ女王を護り賜えcenter|ファイル:United States Navy Band - God Save the Queen.ogg
地図画像: Europe-UK.svg
位置画像: United Kingdom (+overseas territories) in the World (+Antarctica claims).svg
公用語: 英語
首都: ロンドン(事実上)
最大都市: ロンドン
元首等肩書: 女王
元首等氏名: エリザベス2世
首相等肩書: 首相
首相等氏名: ボリス・ジョンソン
他元首等肩書1: 貴族院議長
他元首等氏名1: ノーマン・ファウラー
他元首等肩書2: 庶民院議長
他元首等氏名2: 仮リンク|リンゼイ・ホイル|en|Lindsay Hoyle
他元首等肩書3: 最高裁判所長官
他元首等氏名3: ブレンダ・ヘイル
面積順位: 76
面積大きさ: 1 E11
面積値: 244,820
水面積率: 1.3%
人口統計年: 2018
人口順位: 22
人口大きさ: 1 E7
人口値: 6643万5600Cite web|url=https://www.ons.gov.uk/peoplepopulationandcommunity/populationandmigration/populationestimates|title=Population estimates - Office for National Statistics|accessdate=2019-06-26|date=2019-06-26
人口密度値: 271
GDP統計年元: 2012
GDP値元: 1兆5478億<ref name="imf-statistics-gdp">[http://www.imf.org/external/pubs/ft/weo/2012/02/weodata/weorept.aspx?pr.x=70&pr.y=13&sy=2010&ey=2012&scsm=1&ssd=1&sort=country&ds=.&br=1&c=112&s=NGDP%2CNGDPD%2CPPPGDP%2CPPPPC&grp=0&a=IMF>Data and Statistics>World Economic Outlook Databases>By Countrise>United Kingdom]
GDP統計年MER: 2012
GDP順位MER: 6
GDP値MER: 2兆4337億<ref name="imf-statistics-gdp" />
GDP統計年: 2012
GDP順位: 6
GDP値: 2兆3162億<ref name="imf-statistics-gdp" />
GDP/人: 36,727<ref name="imf-statistics-gdp" />
建国形態: 建国
確立形態1: イングランド王国/スコットランド王国(両国とも1707年合同法まで)
確立年月日1: 927年/843年
確立形態2: グレートブリテン王国成立(1707年合同法)
確立年月日2: 1707年05月01日
確立形態3: グレートブリテン及びアイルランド連合王国成立(1800年合同法)
確立年月日3: 1801年01月01日
確立形態4: 現在の国号「グレートブリテン及び北アイルランド連合王国」に変更
確立年月日4: 1927年04月12日
通貨: UKポンド (£)
通貨コード: GBP
時間帯: ±0
夏時間: +1
ISO 3166-1: GB / GBR
ccTLD: .uk / .gb使用は.ukに比べ圧倒的少数。
国際電話番号: 44

29. 国旗画像のURLを取得する

テンプレートの内容を利用し,国旗画像のURLを取得せよ.(ヒント: MediaWiki APIのimageinfoを呼び出して,ファイル参照をURLに変換すればよい)

MediaWiki APIのImageinfoについては以下を参照します。
MediaWiki Action API Imageinfo

Imageinfoは、画像ファイルまたはファイルについての情報を取得する GET リクエストです。
このAPIを使用してwiki上のファイル名からURLを取得することができます。

import requests

S = requests.Session()

URL = "https://en.wikipedia.org/w/api.php"

PARAMS = {
    "action": "query",
    "format": "json",
    "prop": "imageinfo",
    "titles": "File:" + tempFieldDict3['国旗画像'], # 国旗画像のファイル名
    "iiprop": "url"
}

R = S.get(url=URL, params=PARAMS) # URLとパラメータを指定し、GETリクエスト
DATA = R.json()                   # 応答はJSON形式で返ってくる。

PAGES = DATA["query"]["pages"]    # DATAは辞書型の階層構造になっている。
for k, v in PAGES.items():
    print(v["imageinfo"][0]["url"])

<出力>

https://upload.wikimedia.org/wikipedia/en/a/ae/Flag_of_the_United_Kingdom.svg
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?