如果我想访问文件中的某些注释,这些注释下面有特定的单词。我怎么做?

时间:2015-10-17 08:12:18

标签: python file comments

基本上我想将三组列表与另一个文件进行比较。这些列表由注释区分。我如何将它与每个列表进行比较?我需要为这些列表制作三个单独的文件吗?

示例:单词具有前缀根和后缀。例子是矛盾的。前缀是con,后缀是dict。我有一个这些前缀,后缀等的列表。我需要知道如何将该列表与一堆单词进行比较,并基本上计算该文件中存在的根数,前缀广告后缀。

1 个答案:

答案 0 :(得分:0)

以下内容可能有助于您入门。它使用Python的ConfigParser加载包含所有列表的文件。此文件需要格式化如下:

<强> vocab.txt

[prefixes]
inter
con
mis

[roots]
cred
duct
equ

[suffixes]
dict
ment
ible

每个单词列表都会相应地加载到变量prefixesrootssuffixes中(删除了任何重复项)。然后,它会加载一个名为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)