在文本文件中查找三元组

时间:2017-12-23 20:17:35

标签: python python-3.x

我正在尝试在任何给定的文本文件中找到所有三元组,但是,当我使用此代码时,我没有收到任何错误消息,但我也没有得到所需的三元组。它什么都不返回。

以下是代码:

import sys

def arg2(pair):
return pair[1]

def getTrigrams(wordList):
trigrams = []
for i in range(len(wordList) - 2):
    trigram = (wordList[i], wordList[i + 1], wordList[i + 2])
    trigrams.append(trigram)
    return trigrams

def main(argv):
if len(argv) > 1:
    for arg in argv[1: ]:
        text = open(arg, "r")
        trigram_dictionary = {}
        content = text.read()
        lines = content.split("\n")
        for line in lines:
              words = [word for word in line.split(" ") if word.isalpha()]
              trigram_list = getTrigrams(words)
              for trigram in trigram_list:
                  if trigram not in trigram_dictionary:
                     trigram_dictionary[trigram] = 1
                  else :
                     trigram_dictionary[trigram] += 1
                     sorted_trigram_frequencies = sorted(trigram_dictionary.items(), 
                     key = arg2, reverse = True)
                     for trigram in sorted_trigram_frequencies:
                         print("{0:20}\t{1:5}".format("\t".join(trigram[0]), trigram[1]))

if __name__ == '__main__':
    main(sys.argv)

1 个答案:

答案 0 :(得分:0)

在Python中,你需要非常小心缩进。 (当将代码粘贴到SO时)

如果您再次查看代码末尾附近的if ... else ...块中的代码,您会发现只有在找到第二个相同的三元组时才会对三元组进行排序和打印。这也意味着如果您有多个重复项,您将多次打印所有当前找到的三元组。

您应该将排序和打印代码拉回2或3个缩进级别。