基本上我想将三组列表与另一个文件进行比较。这些列表由注释区分。我如何将它与每个列表进行比较?我需要为这些列表制作三个单独的文件吗?
示例:单词具有前缀根和后缀。例子是矛盾的。前缀是con,后缀是dict。我有一个这些前缀,后缀等的列表。我需要知道如何将该列表与一堆单词进行比较,并基本上计算该文件中存在的根数,前缀广告后缀。
答案 0 :(得分:0)
以下内容可能有助于您入门。它使用Python的ConfigParser
加载包含所有列表的文件。此文件需要格式化如下:
<强> vocab.txt 强>
[prefixes]
inter
con
mis
[roots]
cred
duct
equ
[suffixes]
dict
ment
ible
每个单词列表都会相应地加载到变量prefixes
,roots
和suffixes
中(删除了任何重复项)。然后,它会加载一个名为input.txt
的源文件,并将其拆分为名为words
的单词列表。每个单词都是小写的,以确保它与前缀,词根或后缀之一匹配。
对于每个单词,进行简单测试以查看它是否与您的任何列表匹配。每个匹配都显示一个计数。每个人的总数也会保留并显示在最后。
import ConfigParser
import re
vocab = ConfigParser.ConfigParser(allow_no_value=True)
vocab.read('vocab.txt')
def get_section(section):
return set(v[0].lower() for v in vocab.items(section))
prefixes = get_section('prefixes')
roots = get_section('roots')
suffixes = get_section('suffixes')
total_prefixes = 0
total_roots = 0
total_suffixes = 0
with open('input.txt', 'r') as f_input:
text = f_input.read()
words = [word.lower() for word in re.findall('\w+', text)]
for word in words:
word_prefixes = [p for p in prefixes if word.startswith(p)]
total_prefixes += len(word_prefixes)
word_roots = [r for r in roots if r in word[1:]]
total_roots += len(word_roots)
word_suffixes = [s for s in suffixes if word.endswith(s)]
total_suffixes += len(word_suffixes)
print '{:15} Prefixes {} {}, Roots {} {}, Suffixes {} {}' .format(word,
len(word_prefixes), word_prefixes, len(word_roots), word_roots, len(word_suffixes), word_suffixes)
print
print 'Totals:\n Prefixes {}, Roots {}, Suffixes {}'.format(total_prefixes, total_roots, total_suffixes)