对于这个程序我试图让用户在文件中输入他/她想要的文本,并让程序计算存储在该文件中的单词总数。例如,如果我输入“嗨我喜欢吃蓝莓馅饼”,该程序应该总共读7个单词。程序运行正常,直到我输入选项6,它会计算单词的数量。我总是得到这个错误:'str'对象没有属性'items'
#Prompt the user to enter a block of text.
done = False
textInput = ""
while(done == False):
nextInput= input()
if nextInput== "EOF":
break
else:
textInput += nextInput
#Prompt the user to select an option from the Text Analyzer Menu.
print("Welcome to the Text Analyzer Menu! Select an option by typing a number"
"\n1. shortest word"
"\n2. longest word"
"\n3. most common word"
"\n4. left-column secret message!"
"\n5. fifth-words secret message!"
"\n6. word count"
"\n7. quit")
#Set option to 0.
option = 0
#Use the 'while' to keep looping until the user types in Option 7.
while option !=7:
option = int(input())
#I get the error in this section of the code.
#If the user selects Option 6, print out the total number of words in the
#text.
elif option == 6:
count = {}
for i in textInput:
if i in count:
count[i] += 1
else:
count[i] = 1
#The error lies in the for loop below.
for word, times in textInput.items():
print(word , times)
答案 0 :(得分:6)
此处的问题是textInput
是一个字符串,因此它没有items()
方法。
如果您只想要单词数,可以尝试使用len:
print len(textInput.split(' '))
如果您想要每个单词及其各自的出现次数,则需要使用count
代替textInput
:
count = {}
for i in textInput.split(' '):
if i in count:
count[i] += 1
else:
count[i] = 1
for word, times in count.items():
print(word , times)
答案 1 :(得分:0)
要计算单词总数(包括重复次数),可以使用这个单行,其中file_path是文件的绝对路径:
sum(len(line.split()) for line in open(file_path))