[PYTHON] 100 Sprachverarbeitung klopfen 2020: Kapitel 3 (regulärer Ausdruck)

(Achtung): Der aktuelle Artikel ist verschmutzt, wobei der Vorwärtsbewegung Vorrang eingeräumt wird.

Sprachverarbeitung 100 Knock 2020-Version wurde veröffentlicht, daher werde ich es bei dieser Gelegenheit lösen. Beachten Sie, dass das einmal geladene Paket danach nicht mehr geladen wird, da es sich um eine Markdown-Ausgabe von Jupyter handelt, die auf GitHub veröffentlicht wurde.

Das erste Kapitel ist hier

Ich bin froh, dass ich iterativ geübt habe, als würde ich auf die regulären Ausdrücke klopfen, nach denen ich immer gesucht habe, und es schien, dass zukünftige Analysen reibungslos durchgeführt werden könnten. Ich bin gerade dabei, es bis zum Ende fertig zu stellen, daher kann es einige Fehler geben. Ich würde es begrüßen, wenn Sie darauf hinweisen könnten. Ich habe vor, das Erscheinungsbild des Artikels zu arrangieren, sobald er gelöst wurde.

Kapitel 3: Reguläre Ausdrücke

Es gibt eine Datei jawiki-country.json.gz, die Wikipedia-Artikel im folgenden Format exportiert.

Es scheint, dass der Inhalt der gleiche ist wie 2015. Das Wiki-Markup ist hier zusammengefasst [https://ja.wikipedia.org/wiki/Help:%E6%97%A9%E8%A6%8B%E8%A1%A8].

20. JSON-Daten lesen

Lesen Sie die JSON-Datei des Wikipedia-Artikels und zeigen Sie den Artikeltext zu "UK" an. Führen Sie in den Fragen 21 bis 29 den hier extrahierten Artikeltext aus.

import json

def return_article(fname, article_title):
    with open(fname, 'rt') as data_file:
        for line in data_file:
            data_json = json.loads(line)
            if data_json['title'] == article_title:
                return data_json['text']

file_path = '../data/jawiki-country.json'
uk_article = return_article(file_path, 'England')

print(uk_article)
    {{redirect|UK}}
    {{redirect|Vereinigtes Königreich|Die Nationen des Frühlings und des Herbstes|Englisch(Frühling und Herbst)}}
    {{Otheruses|Europäisches Land|Lokale Küche der Präfekturen Nagasaki und Kumamoto|Igirisu}}
    {{Grundlegende Informationen Land
    |Kurzbezeichnung=England
    |Japanischer Ländername=Vereinigtes Königreich Großbritannien und Nordirland

    <<Folgendes wird weggelassen>>

21. Extrahieren Sie Zeilen mit Kategorienamen

Extrahieren Sie die Zeile, in der der Kategoriename im Artikel angegeben ist.

Mit Blick auf den Inhalt der obigen Ergebnisse wurden die Kategorien wie folgt beschrieben.

[[Category:England|*]]
[[Category:Vereinigte Königreich Mitgliedsländer]]
[[Category:Königreich des Vereinigten Königreichs|*]]
[[Category:G8-Mitgliedsländer]]
[[Category:Mitgliedsländer der Europäischen Union|Ehemalige]]
[[Category:Marine Nation]]
[[Category:Bestehendes souveränes Land]]
[[Category:Inselstaat]]
[[Category:Eine Nation / ein Gebiet, das 1801 gegründet wurde]]

Das Format ist "[[Kategorie: Kategoriename | Sortierschlüssel]]". Um ein Sonderzeichen zu verwenden, ohne seine spezielle Bedeutung aufzurufen, müssen Sie einen Backslash verwenden. Ich schrieb es als "r" ^ \ [+ Kategorie :. + ] + $ ". Mit re.MULTILINE und findall können Sie suchen, ohne die for-Schleife für jeden Zeilenumbruch zu drehen.

import re

def extract_category_row(wiki_text):
    p = re.compile(r'^\[+Category\:.+\]+$', re.MULTILINE)
    return p.findall(wiki_text)

category_rows = extract_category_row(uk_article)
for line in category_rows:
    print(line)
    [[Category:England|*]]
    [[Category:Vereinigte Königreich Mitgliedsländer]]
    [[Category:Königreich des Vereinigten Königreichs|*]]
    [[Category:G8-Mitgliedsländer]]
    [[Category:Mitgliedsländer der Europäischen Union|Ehemalige]]
    [[Category:Marine Nation]]
    [[Category:Bestehendes souveränes Land]]
    [[Category:Inselstaat]]
    [[Category:Eine Nation / ein Gebiet, das 1801 gegründet wurde]]

22. Extraktion des Kategorienamens

Extrahieren Sie die Namen der Artikelkategorien (nach Namen, nicht zeilenweise).

Es kann nur der in () eingeschlossene Teil extrahiert werden. Übereinstimmende Unicode-Wortzeichen mit \ w.

def extract_category_name(wiki_text):
    p = re.compile(r'^\[+Category\:(\w+).+$', re.MULTILINE)
    return p.findall(wiki_text)

category_name = extract_category_name(uk_article)
for line in category_name:
    print(line)
England
Vereinigte Königreich Mitgliedsländer
Königreich des Vereinigten Königreichs
G8-Mitgliedsländer
Mitgliedsländer der Europäischen Union
Marine Nation
Bestehendes souveränes Land
Inselstaat
Eine Nation, die 1801 gegründet wurde

23. Abschnittsstruktur

Zeigen Sie den im Artikel enthaltenen Abschnittsnamen und seine Ebene an (z. B. 1, wenn "== Abschnittsname ==")

== Geschichte == Dies scheint ein Abschnitt zu sein.

def extract_section(wiki_text):
    result = {}
    p = re.compile(r'^(={2,})(\w+)\1$', re.MULTILINE)
    section_content =  p.findall(wiki_text)
    for item in section_content:
        result[item[1]] = len(item[0])
    return result

section_dict = extract_section(uk_article)

for k,v in section_dict.items():
    print('Niveau:',v, k)
Niveau:2 Ländername
Niveau:2 Geschichte
Niveau:2 Geographie
Niveau:3 große Städte
Niveau:3 Klima
Niveau:2 Politik
Niveau:3 Yuan

24. Dateireferenzen extrahieren

Extrahieren Sie alle Mediendateien, auf die aus dem Artikel verwiesen wird.

[[Datei:Wikipedia-logo-v2-ja.png|thumb|Erläuterungstext]]というのがDateiの記載マークアップらしい。

def extract_file(wiki_text):
    p = re.compile(r'\[\[Datei\:(.+?)\|')
    file_name = p.findall(wiki_text)
    return file_name

file_reference = extract_file(uk_article)
print(file_reference)
    ['Royal Coat of Arms of the United Kingdom.svg', '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. Vorlagen extrahieren

Extrahieren Sie die Feldnamen und Werte der im Artikel enthaltenen Vorlage "Basisinformationen" und speichern Sie sie als Wörterbuchobjekt.

Die grundlegenden Informationen lauten wie folgt.

{{Grundlegende Informationen Land
|Kurzbezeichnung=England
|Japanischer Ländername=Vereinigtes Königreich Großbritannien und Nordirland
|Offizieller Ländername= {{lang|en|United Kingdom of Great Britain and Northern Ireland}}<ref>Offizieller Ländername außer Englisch:<br />
*{{lang|gd|An Rìoghachd Aonaichte na Breatainn Mhòr agus Eirinn mu Thuath}}([[schottisch Gälisch]])
*{{lang|cy|Teyrnas Gyfunol Prydain Fawr a Gogledd Iwerddon}}([[Wales]])
*{{lang|ga|Ríocht Aontaithe na Breataine Móire agus Tuaisceart na hÉireann}}([[irisch]])
*{{lang|kw|An Rywvaneth Unys a Vreten Veur hag Iwerdhon Glédh}}([[Cornwall]])
*{{lang|sco|Unitit Kinrick o Great Breetain an Northren Ireland}}([[schottisch]])
**{{lang|sco|Claught Kängrick o Docht Brätain an Norlin Airlann}}、{{lang|sco|Unitet Kängdom o Great Brittain an Norlin Airlann}}(Ulster Scottish)</ref>
|Flaggenbild= Flag of the United Kingdom.svg
|Nationales Emblembild= [[Datei:Royal Coat of Arms of the United Kingdom.svg|85px|Britisches nationales Emblem]]

<<Unterlassung>>

}}

Ein Vorausschau-Assertionssystem wurde verwendet, um unter Verwendung von "|" (zitiert aus Python-Dokument) zu suchen.

(?=...) Wenn ... mit dem Folgenden übereinstimmt, stimmt es überein, es werden jedoch keine Zeichenfolgen verbraucht. Dies wird als Vorausschau bezeichnet. Zum Beispiel wird Isaac (? = Asimov) nur übereinstimmen, wenn auf "Isacac" "Asimov" folgt.

In diesem Zusammenhang habe ich auf Amateur Language Processing verwiesen. Es ist langweilig, weil es genau das gleiche ist, also habe ich es geschrieben, ohne den Teil {{grundlegende Informationen *}} zu extrahieren. Da jedoch die Anzahl der angewandten Studenten in anderen Beispielen gering ist, ist es meiner Meinung nach besser, sie vorher richtig zu extrahieren. Insbesondere beim direkten Extrahieren war nur der Teil | style = * ein Hindernis, daher habe ich ihn durch Entfernen extrahiert.

def extract_basic_info(wiki_text):
    result = {}
    p = re.compile(r'^\|(?!style)(\w+?)\s*\=\s*(.+?)(?:(?=\n\|))', re.MULTILINE)
    basics = p.findall(wiki_text)
    for item in basics:
        result[item[0]] = item[1]
    return result

basic_info = extract_basic_info(uk_article)
print(json.dumps(basic_info, sort_keys=True, indent=4, ensure_ascii=False))
    {
        "BIP-Wert": "2.316,2 Milliarden<ref name=\"imf-statistics-gdp\" />",
        "BIP-Wert MER": "2.433,7 Milliarden<ref name=\"imf-statistics-gdp\" />",
        "BIP-Wertquelle": "1,5478 Billionen<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>",
        "Statistisches BIP-Jahr": "2012",
        "BIP-Statistik Jahr MER": "2012",
        "BIP-Statistik Jahr Yuan": "2012",
        "BIP-Ranking": "6",

        <<Unterlassung>>

    }

26. Entfernen des markierten Markups

Entfernen Sie zum Zeitpunkt der Verarbeitung> 25 das MediaWiki-Hervorhebungs-Markup (alle schwachen Hervorhebungen, Hervorhebungen und starken Hervorhebungen) aus dem Vorlagenwert und konvertieren Sie es in Text (Referenz: [Markup-Kurzreferenz](http: // ja). wikipedia.org/wiki/Help:% E6% 97% A9% E8% A6% 8B% E8% A1% A8))

Ein Hervorhebungs-Markup ist ein Ort, der von zwei oder mehr "wie" Betonung "umgeben ist. Da es sich zum Zeitpunkt der Verarbeitung befindet, haben wir eine neue Funktion definiert, die eine doppelte Verarbeitung durchführt.

def extract_basic_removed_reinforce(wiki_text):
    result = {}
    ps = re.compile(r'\'{2,}') #Teil hinzugefügt
    p = re.compile(r'^\|(?!style)(\w+?)\s*\=\s*(.+?)(?:(?=\n\|))', re.MULTILINE)
    removed_text = ps.sub('', wiki_text) #Teil hinzugefügt
    basics = p.findall(removed_text)
    for item in basics:
        result[item[0]] = item[1]
    return result

basic_info = extract_basic_removed_reinforce(uk_article)
print(json.dumps(basic_info, sort_keys=True, indent=4, ensure_ascii=False))
    {
        "BIP-Wert": "2.316,2 Milliarden<ref name=\"imf-statistics-gdp\" />",
        "BIP-Wert MER": "2.433,7 Milliarden<ref name=\"imf-statistics-gdp\" />",
        "BIP-Wertquelle": "1,5478 Billionen<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>",
        "Statistisches BIP-Jahr": "2012",
        "BIP-Statistik Jahr MER": "2012",
        "BIP-Statistik Jahr Yuan": "2012",
        "BIP-Ranking": "6",
        "BIP-Ranking MER": "6",
        "ccTLD": "[[.uk]] / [[.gb]]<ref>Verwendung ist.Überwiegend kleine Zahl im Vergleich zu Großbritannien.</ref>",
        "Bevölkerungswert": "66.435.600<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>",
        "Einwohnerzahl": "1 E7",
        "Bevölkerungsdichtewert": "271",
        "Jahr der Volkszählung": "2018",
        "Bevölkerungsranking": "22",
        "Namen anderer ehemaliger Führer 1": "[[:en:Norman Fowler, Baron Fowler|Norman Fowler]]",
        "Namen anderer ehemaliger Führer 2": "{{Temporäre Verbindung|Lindsay Foil|en|Lindsay Hoyle}}",
        "Namen anderer ehemaliger Führer 3": "[[:en:Brenda Hale, Baroness Hale of Richmond|Brenda Hale]]",
        "Anderer ehemaliger Haupttitel 1": "[[Aristokratisches Haus(England)|Vorsitzender des aristokratischen Hauses]]",
        "Anderer ehemaliger Haupttitel 2": "[[Haus der einfachen Leute(England)|Vorsitzender des Commonwealth House]]",
        "Anderer ehemaliger Haupttitel 3": "[[Oberster Gerichtshof des Vereinigten Königreichs|Sekretär des Obersten Gerichtshofs]]",
        "Positionieren Sie das Bild": "United Kingdom (+overseas territories) in the World (+Antarctica claims).svg",
        "Vorname": "[[Elizabeth II]]",
        "Ehemaliger Haupttitel": "[[Britischer Prinz|Königin]]",
        "Offizielle Terminologie": "[[Englisch]]",
        "Flaggenbild": "Flag of the United Kingdom.svg",
        "Nationalhymne": "[[Ihre Majestät die Königin|{{lang|en|God Save the Queen}}]]{{en icon}}<br />Gott, beschütze die Königin<br />{{center|[[Datei:United States Navy Band - God Save the Queen.ogg]]}}",
        "Nationaler Emblem-Link": "([[Britisches nationales Emblem|Staatswappen]])",
        "Nationales Emblembild": "[[Datei:Royal Coat of Arms of the United Kingdom.svg|85px|Britisches nationales Emblem]]",
        "Internationale Telefonnummer": "44",
        "Kartenbild": "Europe-UK.svg",
        "Sommerzeit": "+1",
        "Gründungsform": "Gründung des Landes",
        "Japanischer Ländername": "Vereinigtes Königreich Großbritannien und Nordirland",
        "Zeitzone": "±0",
        "Größte Stadt": "London",
        "Slogan": "{{lang|fr|[[Dieu et mon droit]]}}<br />([[Französisch]]:[[Dieu et mon droit|Gott und meine Rechte]])",
        "Wasserflächenverhältnis": "1.3%",
        "Kurzbezeichnung": "England",
        "Gründungsdatum 1": "927/843",
        "Gründungsdatum 2": "1707{{0}}Kann{{0}}1 Tag",
        "Gründungsdatum 3": "1801{{0}}Januar{{0}}1 Tag",
        "Gründungsdatum 4": "1927{{0}}12. April",
        "Etablierte Form 1": "[[Königreich England]]/[[Königreich Schottland]]<br />(Beide Länder[[Gemeinsames Recht(1707)|1707合同法]]Bis)",
        "Etablierte Form 2": "[[Großbritannien Königreich]]Etabliert<br />(Gemeinsames Gesetz von 1707)",
        "Etablierte Form 3": "[[Vereinigtes Königreich Großbritannien und Irland]]Etabliert<br />([[Gemeinsames Recht(1800)|1800合同法]])",
        "Etablierte Form 4": "Geändert in den aktuellen Ländernamen "Großbritannien und das Vereinigte Königreich Nordirland"",
        "Währung": "[[Sterling Teich|UK Pfund]](£)",
        "Währungscode": "GBP",
        "Flächenwert": "244,820",
        "Flächengröße": "1 E11",
        "Gebietsrangliste": "76",
        "Name des Premierministers": "[[Boris Johnson]]",
        "Titel des Premierministers": "[[britischer Premierminister|Premierminister]]",
        "Hauptstadt": "[[London]](eigentlich)"
    }


### 27.Entfernung interner Links

>Entfernen Sie zusätzlich zu den 26 Prozessen das interne Link-Markup von MediaWiki aus dem Vorlagenwert und konvertieren Sie es in Text.

Der Link ist

[[Artikelüberschrift]]
[[Artikelüberschrift|Zeichen anzeigen]]
[[Artikelüberschrift#Abteilungsname|Zeichen anzeigen]]


Es gibt drei Arten. Andere Wiki-Markups, die wahrscheinlich an der Verarbeitung beteiligt sind, umfassen Kategorien, Dateispezifikationen und Umleitungselemente. Ich konnte im Artikel keine Weiterleitung finden, daher werde ich nur die Kategorie- und Dateispezifikationen entfernen.
Bis zu diesem Punkt wird alles mit einer Funktion erledigt, aber ich denke, dass jede als eine andere Funktion definiert werden sollte, beispielsweise das Lesen der grundlegenden Hilfe.

[[Category:Hilfe|Hiyo Hayami]]
[[Datei:Wikipedia-logo-v2-ja.png|thumb|Erläuterungstext]]
#REDIRECT [[Artikelüberschrift]]
#REDIRECT [[Artikelüberschrift#Abteilungsname]]

?!: Positiv, wenn nicht zutreffend ?:: Geben Sie an, wo nicht erfasst werden soll

#Linkentfernungsfunktion
def remove_links(text):
    p = re.compile(r'\[\[(?!Category\:Datei)(?:[^|]*?\|)?([^|]*?)\]\]')
    return p.sub(r'\1', text)

def extract_basic_not_link_reinforce(wiki_text):
    result = {}
    ps = re.compile(r'\'{2,}') 
    p = re.compile(r'^\|(?!style)(\w+?)\s*\=\s*(.+?)(?:(?=\n\|))', re.MULTILINE) 
    removed_text = remove_links(ps.sub('', wiki_text)) #Teil geändert
    basics = p.findall(removed_text)
    for item in basics:
        result[item[0]] = item[1]
    return result

basic_info = extract_basic_not_link_reinforce(uk_article)
print(json.dumps(basic_info, sort_keys=True, indent=4, ensure_ascii=False))

```json
    {
 "BIP-Wert": "2,3162 Billionen <ref name =" imf-statistics-gdp "/>",
 "BIP-Wert MER": "2,4337 Billionen <ref name =" imf-statistics-gdp "/>",
 "BIP-Wertquelle": "1,5478 Billionen <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 = Datenbanken> Nach Ländern> Vereinigtes Königreich] </ ref> ",
 "BIP-Statistikjahr": "2012",
 "BIP-Statistikjahr MER": "2012",
 "BIP-Statistikjahr Yuan": "2012",
 "BIP-Ranking": "6",
 "BIP-Ranking MER": "6",
 "ccTLD": ".uk / .gb <ref> Die Verwendung ist überwiegend geringer als .uk. </ Ref>",
         "Bevölkerungswert": "66.435.600<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>",
 "Bevölkerungsgröße": "1 E7",
 "Bevölkerungsdichtewert": "271",
 "Volkszählungsjahr": "2018",
 "Bevölkerungsranking": "22",
 "Andere ehemalige Führer 1": "Norman Fowler",
         "Namen anderer ehemaliger Führer 2": "{{Temporäre Verbindung|Lindsay Foil|en|Lindsay Hoyle}}",
 "Andere ehemalige Führer 3": "Brenda Hale",
 "Anderer ehemaliger Haupttitel 1": "Vorsitzender des Aristokratischen Hauses",
 "Anderer ehemaliger Chef Titel 2": "Vorsitzender des Common People's House",
    }

28.Entfernen des MediaWiki-Markups

Entfernen Sie zusätzlich zu den 27 Prozessen MediaWiki-Markups so weit wie möglich aus den Vorlagenwerten und formatieren Sie die grundlegenden Länderinformationen.

Definieren wir es noch einmal aus der Extraktion grundlegender Informationen. Das Cite-Web und das Cite-Center wurden noch nicht abgerufen und müssen repariert werden. Ich werde zurückkommen, wenn ich Kapitel 10 erreiche.

# Extraktion grundlegender Informationen
def extract_basic(text):
     p = re.compile(r'^\|(?!style)(\w+?)\s*\=\s*(.+?)(?:(?=\n\|))', re.MULTILINE)
    basics = p.findall(text)
    return basics

# Entfernungsfunktion
def remove_emphasis(text):
    p = re.compile(r'\'{2,}')
    return p.sub(r'', text)
def remove_links(text):
     p = re.compile(r'\[\[(?:[^|]*?\|)*?([^|]*?)\]\]')
    return p.sub(r'\1', text)
def remove_tags(text):
    p = re.compile(r'<[^>]*?>')
    return p.sub(r'', text)
def remove_lang(text):
     p = re.compile(r'\{\{lang(?:[^|]*?\|)*?([^|]*?)\}\}')
    return p.sub(r'\1', text)
def remove_ex_link(text):
    p = re.compile(r'\[http:\/\/(?:[^\s]*?)\s([^]]*?)\]')
    return p.sub(r'\1', text)


def main():
    basic_dict = {}
    basic_list = extract_basic(uk_article)
    for target in basic_list:
        explanation = remove_emphasis(target[1])
        explanation = remove_links(explanation)
        explanation = remove_tags(explanation)
        explanation = remove_lang(explanation)
        explanation = remove_ex_link(explanation)
        basic_dict[target[0]] = explanation
    print(json.dumps(basic_dict, sort_keys=True, indent=4, ensure_ascii=False))
        
if __name__ == '__main__':
    main()
    {
 "BIP-Wert": "2,3162 Billionen",
 "BIP-Wert MER": "2,4337 Billionen",
 "BIP-Quelle": "1,5478 Billionen und Statistiken> World Economic Outlook-Datenbanken> Nach Ländern> Vereinigtes Königreich",
 "BIP-Statistikjahr": "2012",
 "BIP-Statistikjahr MER": "2012",
 "BIP-Statistikjahr Yuan": "2012",
 "BIP-Ranking": "6",
 "BIP-Ranking MER": "6",
 << Unten weggelassen >>
    }

29.Holen Sie sich die URL des Flaggenbildes

Verwenden Sie den Inhalt der Vorlage, um die URL des Flaggenbilds abzurufen. (Hinweis: MediaWiki APIvonimageinfoSokonvertierenSiedenDateiverweisineineURL)

Um 28"Flaggenbild": "Flag of the United Kingdom.svg"Wurde erhalten.

import requests

def extract_basic_dict(article):
    basic_dict = {}
    basic_list = extract_basic(article)
    for target in basic_list:
        explanation = remove_emphasis(target[1])
        explanation = remove_links(explanation)
        explanation = remove_tags(explanation)
        explanation = remove_lang(explanation)
        explanation = remove_ex_link(explanation)
        basic_dict[target[0]] = explanation
    return basic_dict

basic_dict = extract_basic_dict(uk_article)
 fname_flag = basic_dict ['Flag Image']

def obtain_url(basic_dict, title):
    fname_flag = basic_dict[title].replace(' ', '_')
    url = 'https://en.wikipedia.org/w/api.php?' \
        + 'action=query' \
        + '&titles=File:' + fname_flag \
        + '&prop=imageinfo' \
        + '&iiprop=url' \
        + '&format=json'
    data = requests.get(url)
    return re.search(r'"url":"(.+?)"', data.text).group(1)


def main():
    basic_dict = extract_basic_dict(uk_article)
 query_url = receive_url (basic_dict, "flag image")
    print(query_url)
    
if __name__ == '__main__':
    main()
    https://upload.wikimedia.org/wikipedia/en/a/ae/Flag_of_the_United_Kingdom.svg

Recommended Posts

100 Sprachverarbeitung klopfen 2020: Kapitel 3 (regulärer Ausdruck)
100 Sprachverarbeitungsklopfen ~ Kapitel 1
100 Sprachverarbeitungsklopfen 03 ~ 05
100 Sprachverarbeitungsklopfen (2020): 40
100 Sprachverarbeitungsklopfen (2020): 32
100 Sprachverarbeitungsklopfen (2020): 47
100 Klicks in der Verarbeitung natürlicher Sprache Kapitel 4 Kommentar
100 natürliche Sprachverarbeitung klopft Kapitel 3 Reguläre Ausdrücke (erste Hälfte)
[Sprachverarbeitung 100 Schläge 2020] Kapitel 6: Maschinelles Lernen
100 Sprachverarbeitungsklopfen (2020): 22
100 Sprachverarbeitungsklopfen (2020): 26
100 Sprachverarbeitungsklopfen (2020): 34
100 Sprachverarbeitungsklopfen 2020: Kapitel 4 (morphologische Analyse)
[Sprachverarbeitung 100 Schläge 2020] Kapitel 5: Abhängigkeitsanalyse
100 Sprachverarbeitungsklopfen (2020): 42
100 Sprachverarbeitungsklopfen (2020): 29
100 Sprachverarbeitungsklopfen (2020): 49
100 Sprachverarbeitungsklopfen 06 ~ 09
100 Sprachverarbeitungsklopfen (2020): 43
100 Sprachverarbeitungsklopfen (2020): 24
[Sprachverarbeitung 100 Schläge 2020] Kapitel 1: Vorbereitende Bewegung
100 Sprachverarbeitungsklopfen (2020): 45
100 Sprachverarbeitungsklopfen (2020): 10-19
[Sprachverarbeitung 100 Schläge 2020] Kapitel 7: Wortvektor
100 Sprachverarbeitungsklopfen (2020): 30
100 Sprachverarbeitungsklopfen (2020): 00-09
100 Sprachverarbeitungsklopfen (2020): 31
[Sprachverarbeitung 100 Schläge 2020] Kapitel 8: Neuronales Netz
100 Sprachverarbeitungsklopfen (2020): 48
[Sprachverarbeitung 100 Schläge 2020] Kapitel 2: UNIX-Befehle
100 Sprachverarbeitungsklopfen (2020): 44
100 Sprachverarbeitungsklopfen (2020): 41
100 Sprachverarbeitungsklopfen (2020): 37
[Sprachverarbeitung 100 Schläge 2020] Kapitel 9: RNN, CNN
100 Sprachverarbeitungsklopfen (2020): 25
100 Sprachverarbeitungsklopfen (2020): 23
100 Sprachverarbeitungsklopfen (2020): 33
100 Sprachverarbeitungsklopfen (2020): 20
100 Sprachverarbeitungsklopfen (2020): 27
100 Sprachverarbeitung Knock 2020 Kapitel 3: Reguläre Ausdrücke
[Sprachverarbeitung 100 Schläge 2020] Kapitel 4: Morphologische Analyse
100 Sprachverarbeitungsklopfen (2020): 46
100 Sprachverarbeitungsklopfen (2020): 21
100 Sprachverarbeitungsklopfen (2020): 36
Sprachverarbeitung 100 Schläge Kapitel 4: Morphologische Analyse 31. Verben
100 Amateur-Sprachverarbeitungsklopfen: 41
100 Amateur-Sprachverarbeitungsklopfen: 56
100 Amateur-Sprachverarbeitungsklopfen: 24
100 Amateur-Sprachverarbeitungsklopfen: 50
100 Amateur-Sprachverarbeitungsklopfen: 59
100 Amateur-Sprachverarbeitungsklopfen: 70
100 Amateur-Sprachverarbeitungsklopfen: 62
100 Sprachverarbeitung Knock 2020 Kapitel 1
100 Amateur-Sprachverarbeitungsklopfen: 92
100 Amateur-Sprachverarbeitungsklopfen: 06
100 Amateur-Sprachverarbeitungsklopfen: 81
100 Amateur-Sprachverarbeitungsklopfen: 46
100 Amateur-Sprachverarbeitungsklopfen: 88
100 Amateur-Sprachverarbeitungsklopfen: 89
100 Amateur-Sprachverarbeitungsklopfen: 43
100 Amateur-Sprachverarbeitungsklopfen: 55