我如何只使用一列导入的文本文件?

时间:2016-05-25 15:52:05

标签: python python-3.x text-files multiple-columns

在我的代码中,我导入3个不同的名称和数字列表,我想获得最不常出现的名称。现在我得到了所有名字的列表以及它们出现的次数。但是代码还会计算我不需要的所有其他列。

  1. 我如何只分析1列文本文件的数据?
  2. 2.只能出现一次,而不是多次出现的单词?

    import re
    
    filelist = ['D.txt','A.txt','S.txt']
    wordbank = {}
    for file in filelist:
        article_one = re.findall('\w+', open(file,).read().lower())
    
        for word in article_one:
            word = word.lower().strip(string.punctuation)
            if word not in wordbank:
                wordbank[word] = 1
            else:
                wordbank[word] += 1
    
    sortedwords = sorted(wordbank.items(), key=operator.itemgetter(1))
    
    for word in sortedwords:
        print (word[1], word[0])
    

1 个答案:

答案 0 :(得分:1)

文本文件中列的分隔是什么?为了举例,我们可以说它们是制表符分隔的列。您不必使用正则表达式,而是在文本文件的每一行中读取所有内容,然后将行分为'\t'。然后,要仅使用第一列,请将包含拆分行的列表的索引号为零。

你正在用wordbank做什么应该足以找到只发生一次的单词。您所要做的就是检查每个单词的计数,以确保它不大于1.例如:

filelist = ['D.txt','A.txt','S.txt']
wordbank = {}
for file in filelist:
    f = open(file, 'r')
    lines = f.readlines()
    for l in lines:
        line = l.split('\t')
        word = line[0]

        if word not in wordbank:
            wordbank[word] = 1
        else:
            wordbank[word] += 1
    f.close()

# Gather unique words
unique_words = []
for word in wordbank.keys():
    if wordbank[word] == 1:
        unique_words.append(word)