python extract words from xml

三世轮回 提交于 2019-12-12 01:53:15

问题


How to extract all words between <text></text> from big xml file (1.3 gb) whose structure is as follows:

<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="pl">
  <siteinfo>
    <sitename>Wikipedia</sitename>
    <dbname>plwiki</dbname>
    <base>http://pl.wikipedia.org/wiki/Wikipedia:Strona_g%C5%82%C3%B3wna</base>
    <generator>MediaWiki 1.25wmf12</generator>
    <case>first-letter</case>
    <namespaces>
      <namespace key="-2" case="first-letter">Media</namespace>
      <namespace key="-1" case="first-letter">Specjalna</namespace>
      <namespace key="0" case="first-letter" />
      <namespace key="1" case="first-letter">Dyskusja</namespace>
      <namespace key="2" case="first-letter">Wikipedysta</namespace>
      <namespace key="3" case="first-letter">Dyskusja wikipedysty</namespace>
      <namespace key="4" case="first-letter">Wikipedia</namespace>
      <namespace key="5" case="first-letter">Dyskusja Wikipedii</namespace>
      <namespace key="6" case="first-letter">Plik</namespace>
      <namespace key="7" case="first-letter">Dyskusja pliku</namespace>
      <namespace key="8" case="first-letter">MediaWiki</namespace>
      <namespace key="9" case="first-letter">Dyskusja MediaWiki</namespace>
      <namespace key="10" case="first-letter">Szablon</namespace>
      <namespace key="11" case="first-letter">Dyskusja szablonu</namespace>
      <namespace key="12" case="first-letter">Pomoc</namespace>
      <namespace key="13" case="first-letter">Dyskusja pomocy</namespace>
      <namespace key="14" case="first-letter">Kategoria</namespace>
      <namespace key="15" case="first-letter">Dyskusja kategorii</namespace>
      <namespace key="100" case="first-letter">Portal</namespace>
      <namespace key="101" case="first-letter">Dyskusja portalu</namespace>
      <namespace key="102" case="first-letter">Wikiprojekt</namespace>
      <namespace key="103" case="first-letter">Dyskusja wikiprojektu</namespace>
      <namespace key="828" case="first-letter">Moduł</namespace>
      <namespace key="829" case="first-letter">Dyskusja modułu</namespace>
    </namespaces>
  </siteinfo>
  <page>
    <title>AWK</title>
    <ns>0</ns>
    <id>2</id>
    <revision>
      <id>40933900</id>
      <parentid>38565213</parentid>
      <timestamp>2014-11-12T13:48:35Z</timestamp>
      <contributor>
        <username>ToSter</username>
        <id>70424</id>
      </contributor>
      <minor />
      <comment>[[WP:SK]], drobne techniczne</comment>
      <model>wikitext</model>
      <format>text/x-wiki</format>
      <text xml:space="preserve">{{Język programowania infobox
Elektrony znajdujące się na najdalszej powłoce w atomie nazywane są [[Elektron walencyjny|walencyjnymi]], a ich powłoka − [[powłoka walencyjna|walencyjną]]. Liczba takich elektronów determinuje właściwości chemiczne atomów. Atomy, w których powłoka walencyjna nie jest w pełni wypełniona, łatwo oddziałują z innymi atomami, tak aby uzupełnić (lub opróżnić) tę powłokę&lt;ref&gt;{{Cytuj stronę | url = http://www.cem.msu.edu/~reusch/VirtualText/intro1.htm | tytuł = Virtual Textbook of Organic Chemistry | data dostępu = 2008-01-11 | nazwisko = Reusch | imię = William | data = 2007-07-16 | opublikowany = Michigan State University}}&lt;/ref&gt;. Odbywa się to poprzez [[reakcja chemiczna|reakcje chemiczne]], czyli procesy tworzenia i zrywania [[wiązanie chemiczne|wiązań chemicznych]].

Wiązania powstają w efekcie uwspólniania elektronów przez dwa lub więcej atomów ([[wiązanie kowalencyjne]]) albo na skutek przeniesienia elektronów z jednego atomu na drugi ([[wiązanie jonowe]]). W pierwszym przypadku współdzielone elektrony tworzą jedną, wspólną chmurę wokół połączonych atomów, a w drugim atomy łączą się w [[para jonowa|pary jonowe]], przyciągane do siebie [[oddziaływanie elektrostatyczne|oddziaływaniem elektrostatycznym]]. O typie wiązania decyduje różnica [[elektroujemność|elektroujemności]] atomów&lt;ref&gt;{{cytuj 

stronę|url=http://www.chemguide.co.uk/atoms/bonding/ionic.html|tytuł=Ionic (Electrovalent) Bonding|autor=Jim Clark|data= 2000|opublikowany=chemguide|język=en|data dostępu=2010-09-09}}&lt;/ref&gt;&lt;ref&gt;{{Cytuj stronę | url = http://www.chemguide.co.uk/atoms/bonding/covalent.html | tytuł = Covalent bonding – Single bonds | rok = 2000 | opublikowany = chemguide}}&lt;/ref&gt;.

     |logo =
     |nazwa = AWK
    </text>
          <sha1>6fsbyepqq15mfrk3co2i3ck0o4svz1n</sha1>
        </revision>
      </page>
      <page>
        <title>Alergologia</title>
        <ns>0</ns>
        <id>4</id>
        <revision>
          <id>41351093</id>
          <parentid>35063052</parentid>
          <timestamp>2014-12-27T16:38:14Z</timestamp>
          <contributor>
            <username>Mishu57</username>
            <id>632110</id>
          </contributor>
          <comment>/* Linki zewnętrzne */ commons</comment>
          <model>wikitext</model>
          <format>text/x-wiki</format>
          <text xml:space="preserve">'''Alergologia''' - dziedzina [[medycyna|medycyny]] zajmująca się rozpoznawaniem i [[leczenie|leczeniem]] [[alergia|schorzeń alergicznych]].

== Zobacz też ==
{{wikisłownik|alergologia}}
* [[alergen]]

== Linki zewnętrzne ==
{{commonscat|Allergology}}
* [http://www.pta.med.pl/ Polskie Towarzystwo Alergologiczne]
* [http://www.alergologia.org/ Portal Lekarzy Alergologów 'alergologia.org']
* [http://alergie.mp.pl/ Alergie.mp.pl, serwis wydawnictwa Medycyna Praktyczna]


{{Zastrzeżenia|Medycyna}}

{{Specjalności medyczne}}

[[Kategoria:Alergologia| ]]
[[Kategoria:Specjalności lekarskie]]</text>
      <sha1>5sgz8sbnobk66fyywx5p8v366s5p5zu</sha1>
    </revision>
  </page>

And save it to txt file like:

Jezyk
programowania
infobox
...
alergologia
dziedzina
medycyna 
...

All special characters like [', *, [ , &] should be cut out. It has many <text> sections. How to do this in python (I don't have much ram memory in my pc, so it should iterate somehow).

Could you help me, please?

At least does anyone know how to convert this file (only text section) into csv or json file. CSV most desired form is as given above.

来源:https://stackoverflow.com/questions/27841981/python-extract-words-from-xml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!