用python解析一个巨大的字典文件。简单的任务我不能动脑

用python解析一个巨大的字典文件。简单的任务我不能动脑,python,dictionary,Python,Dictionary,我刚刚得到了一个用于其他编程用途的巨大的1.4m行字典,我很难过地看到notepad++没有足够的功能来解析这个问题。字典包含三种类型的行: <ar><k>-aaltoiseen</k> yks.ill..ks. <kref>-aaltoinen</kref></ar> yks.nom. -aaltoinen; yks.gen. -aaltoisen; yks.part. -aaltoista; yks.ill. -aalt

我刚刚得到了一个用于其他编程用途的巨大的1.4m行字典,我很难过地看到notepad++没有足够的功能来解析这个问题。字典包含三种类型的行:

<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()

我不是特别问你如何做这件事,但任何事情都会有帮助。非常感谢您提供一个指向教程或一种行解析方法的链接。

首先查找单词的定义。 创建一个正则表达式来捕获这些匹配项。例如-分词“\b”将匹配单词边界和非单词字符。

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


对于前两种情况,您可以看到任何单词的开头和结尾都有一个特定的标记,如果我们仔细观察,那么我们可以说每个单词前面都必须有一个>-字符串和一个
# First and second cases
start = line.find(">-")+2
end = line.find("</")+1
required_word = line[start:end]

在您发布的示例中,单词是什么?给定您的示例输入,您希望该示例的输出是什么样的,即使您必须手工操作。给我们这些,我们就可以针对您的问题定制一个响应。这看起来像XML,是吗?谢谢链接!:这正是我要找的。对不起,我是个新手,太好了!我最后做的就是你给我看的,然后解析列表。谢谢你!很高兴帮助你:@punkkapika
    word_lst = line.split(";")
    ans = []
    for word in word_list:
      start = word.find("-")
      ans.append(word[start:])
    ans = set(ans)