用python解析一个巨大的字典文件。简单的任务我无法理解

时间:2014-12-14 18:24:35

标签: python dictionary

我刚刚得到一个巨大的1.4米线字典对于其他编程使用,我很伤心看到记事本+ +是没有强大到足以做分析工作的问题。字典包含三种类型的行:

<ar><k>-aaltoiseen</k>
yks.ill..ks. <kref>-aaltoinen</kref></ar>
yks.nom. -aaltoinen; yks.gen. -aaltoisen; yks.part. -aaltoista; yks.ill. -aaltoiseen; mon.gen. -aaltoisten -aaltoisien; mon.part. -aaltoisia; mon.ill. -aaltoisiinesim. Lyhyt-, pitkäaaltoinen.</ar>

我希望将它的每个单词都提取到一个没有重复的单词列表中。让我们从我的代码开始。

f = open('dic.txt')
p = open('parsed_dic.txt', 'r+')
lines = f.readlines()
for line in lines:
    #<ar><k> lines
    #<kref> lines
    #ending to ";" - lines
    for word in listofwordsfromaline:
        p.write(word,"\n")
f.close()
p.close()

我不是特别问你如何做这整件事,但任何事情都会有所帮助。将非常感谢指南或一种类型的行解析方法的链接。

2 个答案:

答案 0 :(得分:0)

首先找到为您定义单词的内容。 制作正则表达式以捕获这些匹配。例如 - 单词分隔'\ b'将匹配单词边界(非单词字符)。 https://docs.python.org/2/howto/regex.html

如果每种类型的行中的单词定义不同 - 那么如果语句首先匹配该行,则相应的正则表达式匹配该单词,依此类推。

Match groups in Python

答案 1 :(得分:0)

对于前两种情况,您可以看到任何单词以特定标记开头和结尾,如果我们仔细看到它,那么我们可以说每个单词必须在其前面有一个“&gt; - ”字符串,并且“

# First and second cases
start = line.find(">-")+2
end = line.find("</")+1
required_word = line[start:end]

在最后一种情况下,您可以使用split方法:

    word_lst = line.split(";")
    ans = []
    for word in word_list:
      start = word.find("-")
      ans.append(word[start:])
    ans = set(ans)