所以我需要编写一个程序,要求我输入文件名,然后输入任何单词,它会输出一个单独的文本文件中有多少单词。
这是我到目前为止所拥有的:
fname= raw_input("Enter File Name: ")
s= raw_input("enter substring: ")
with open(fname, 'r') as f:
// read the file into a list
// split each line into words
// compare each word with the desired word and count
import string
fname = raw_input("Enter File Name: ")
s = raw_input("enter substring: ")
fp = open(fname, 'rt')
L = fp.readlines() # read all lines into a list "L"
c = 0 # word count
for i in L:
arr = string.split(i) # split on whitespace
for word in arr:
if word == s:
c += 1
print "There are %d occurrances of the word \"%s\" in file \"%s\"\n" % (c, s, fname)
还有一行:
print f.read().count(s)
到目前为止,您拥有的是一个良好的开端。事实上,如果我自己解决问题,这几乎正是我会开始的。由于这可能是一项家庭作业,因此我不会为您编写代码,但希望我可以为您指明下一步该做什么。
首先,您需要将文件读入一个可以搜索的字符串。可能你会想用它f.read()
来一次得到这一切。您也可以一次处理一行,但我认为如果您的搜索字符串跨越多个行,这将不起作用。
您可能需要在搜索之前对字符串进行一些“清理”(例如,正则化空格、大写、标点符号等)。您需要多少可能取决于您的文件内容究竟是什么,以及您希望搜索工作的紧密程度。如果您搜索“生病”,您希望它匹配“我会”吗?“连字符”匹配“连字符-\ 命名”怎么样(如果您的文本文件有连字符在两行之间分隔单词)?
获得清理后的字符串后,您必须决定如何搜索子字符串。您可以使用str
类的方法(例如find
或count
),也可以使用类似的模块re
进行更高级的文本搜索。阅读文档并选择最适合您的。