对于任何用户赋予的文本文件,该程序将读取,分析和写入每个单词,其中包含在输出文件中找到单词的行号



对于任何用户赋予的文本文件,该程序将读取,分析和写入每个单词,并使用在输出文件中找到单词的行号。一个单词可能以多行出现。一个单词在一行中不止一次显示,线号仅记录一次。要求用户输入文本文件的名称。使用try/除了无效的用户输入外。然后程序读取文本文件的内容并创建一个词典,其中键值对描述如下:

  • 关键。关键是文件中的单个单词。
  • 值。每个值都是一个列表,其中包含在找到单词(键(的文件中的行号。请注意,列表可能只有一个元素。

构建字典后,程序应创建另一个名为" Word_index.txt"的文本文件。接下来,将字典的内容写入文件中,作为单词的字母顺序列表,这些单词存储在字典中(对键进行排序(以及单词出现在原始文件中的行号。

请参阅下面的我的代码

import string
fname = input('Enter a file name: ')
try:
    fhand = open(fname)
except:
    print('File cannot be opened:', fname)
    exit()
counts = dict()
L_N=0
for line in fhand:
    line= line.rstrip()
    line = line.translate(line.maketrans(' ', ' ',string.punctuation))
    line = line.lower()
    words = line.split()
    L_N+=1
    for word in words:
        if word not in counts:
            counts[word]= [L_N]
        else:
            if L_N not in counts[word]:
                counts[word].append(L_N) 
for h in range(len(counts)):
    print(counts)
out_file = open('word_index.txt', 'w')
out_file.write('Text file being analyzed is: '+str(fname)+ 'nn')
out_file.close()

结果应该一次打印结果,但我遇到了一个问题,它一次打印多次。

,由于您在for循环中打印字典,它将被打印n次 - n是字典的长度 - 因此,您只需要删除此词循环:

for h in range(len(counts)):
    print(counts)

并添加此:在这里,我们只是循环浏览字典以获取每对

for key, value in counts.items():
    print('key: ', key, 'value: ', value)

最新更新