python extract words from xml

700 Views Asked by At

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.

0

There are 0 best solutions below