0

我将 4GB 维基词典 XML 数据转储分解为更小的文件,没有重叠,用 Python 处理它并保存不同的页面 (...)。

相同的信息,在不同的文件中拆分,正在膨胀到 18+ GB。

为什么会这样?有没有办法避免这种情况?

import os 
import re
import subprocess

subprocess.call(['mkdir', 'WIKTIONARY_WORDS_DUMP'])

# English Wiktionary (which noneless contains many foreign words!)
f = open('enwiktionary-20151020-pages-articles.xml', 'r')

page = False
number = 1
for i, l in enumerate(f): 

    if '<page>' in l:
        word_file = open(os.path.join('WIKTIONARY_WORDS_DUMP', str(number)+'.xml'), 'a')
        word_file.write(l)
        page = True
        number += 1

    elif '</page>' in l:
        word_file.write(l)
        word_file.close()
        page = False

    elif page:
        word_file.write(l)


word_file.close()
f.close()
4

1 回答 1

1

较小的文件是否也保存为 XML,具有相同的标签层次结构?如果是这样,你肯定会有一些标签重复。

即,如果您要拆分此文件:

<root>
    <item>abc</item>
    <item>def</item>
    <item>ghi</item>
</root>

分成三个单独的文件:

<root>
    <item>abc</abc>
</root>

<root>
    <item>def</abc>
</root>

<root>
    <item>ghi</abc>
</root>

<root>标记在每个较小的文件中重复。

如果您的数据方案更复杂,情况会变得更糟:

<root>
    <level1>
        <level2>
            <level3>
                <item>abc</item>
            </level3>
        </level2>
    </level1>
</root>
于 2015-10-29T18:28:28.500 回答