我刚刚得到一个巨大的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()
我不是特别问你如何做这整件事,但任何事情都会有所帮助。将非常感谢指南或一种类型的行解析方法的链接。
答案 0 :(得分:0)
首先找到为您定义单词的内容。 制作正则表达式以捕获这些匹配。例如 - 单词分隔'\ b'将匹配单词边界(非单词字符)。 https://docs.python.org/2/howto/regex.html
如果每种类型的行中的单词定义不同 - 那么如果语句首先匹配该行,则相应的正则表达式匹配该单词,依此类推。
答案 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)