Python Shell请求文件名,然后询问子字符串(any),程序将输出出现次数

时间:2012-10-15 06:04:50

标签: python input

所以我需要编写一个程序,要求我输入一个文件名,然后输入任何单词,它会给我一个单独的文本文件中有多少单词的输出。

这是我到目前为止所拥有的:

fname= raw_input("Enter File Name: ")
s= raw_input("enter substring: ")

with open(fname, 'r') as f:

3 个答案:

答案 0 :(得分:0)

还有一行:

print f.read().count(s)

答案 1 :(得分:0)

到目前为止你所拥有的是一个良好的开端。事实上,如果我自己解决问题,它几乎就是我的开始。由于这可能是一项家庭作业,我不打算为你编写代码,但希望我能指出你下一步该做什么。

首先,您要将文件读入可以搜索的字符串中。您可能希望使用f.read()一次性完成所有操作。您也可以一次处理一行,但我认为如果您的搜索字符串跨越多行,则无效。

您可能需要做一些"清洁"搜索之前的字符串(例如,规则化空格,大写,标点符号等)。您需要多少可能取决于您的文件的确切内容,以及您希望搜索的工作紧密程度。如果你搜索"生病"你希望它匹配"我' l"?如何"连字符"匹配"连字符" (如果你的文本文件在两行之间有连字符分隔词?)

获得清理过的字符串后,您必须决定如何搜索子字符串。您可以使用str类的方法(例如findcount),也可以使用re这样的模块进行更高级的文本搜索。阅读文档并选择最适合您的文档。

答案 2 :(得分:0)

// 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)