对于任何用户赋予的文本文件,该程序将读取,分析和写入每个单词,并使用在输出文件中找到单词的行号。一个单词可能以多行出现。一个单词在一行中不止一次显示,线号仅记录一次。要求用户输入文本文件的名称。使用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)