计数字符串
根据下面的回复,我编辑了这个问题:
我有一个文本文件,里面有一串字符串。我想要统计这些字符串在另一个文本文件中出现的次数。
这是我在一个文件中拥有的字符串示例:
Red Car
No lake
Newjersey turnpike
这是我想要搜索上述字符串的文本文件:
I have a red car which I drove on newjersey
turnpike. When I took exit 39 there was no
lake. I drove my car on muddy roads which turned my red
car into brown. Driving on Newjersey turnpike can be confusing.
我想要的答案是:
Newjersey turnpike 2
No lake 1
red car 2
我该如何用Python来编写这个程序呢?非常感谢你的帮助!
这是我到目前为止尝试过的:
input_file_path = r'input_file.txt'
phrase_path = r'phrase_words.txt'
string_count_path =r'string_count.txt'
f = open(phrase_path,'r')
lines = f.readlines()
keys = []
for line in lines:
key.append(line)
phrase_word = map(string.strip,map(str.lower,keys))
f.close()
dict={}
for key in phrase_words:
dict[key]=0
f=open(input_file_path,'r')
lines = map(string.strip,map(str.lower,f.readlines()))
for w in lines:
try:
dict[w] += 1
except KeyError:
pass
f.close()
字符串分配得很好,但结果不对……
phrase_words = ['red car', 'no lake', 'newjersey turnpike']
lines = ['i have a red car which i drove on newjersey', 'turnpike. when i took exit 39 there was no', 'lake. i drove my car on muddy roads which turned my red', 'car into brown. driving on newjersey turnpike can be confusing.']
dict = {'red car': 0, 'newjersery turnpike': 0, 'no lake': 0}
4 个回答
0
这是一个简单的方法,虽然没有经过测试,但应该可以用。假设没有交叉的单词。
f = open('keys.txt','r')
lines = f.readlines()
keys = []
for line in lines:
keys.extend(line.split())
f.close()
dict = {}
for key in keys:
dict[key]=0
f = open('target.txt','r')
lines = f.readlines()
for line in lines:
l = line.split()
for w in l:
try:
dict[w] += 1
except KeyError:
pass
f.close()
1
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们写的代码有bug,或者是因为我们没有正确理解某些概念。解决这些问题的关键是要仔细检查代码,理解每一行代码的作用,以及它们是如何相互影响的。
此外,查阅相关的文档和资料也很重要,这样可以帮助我们更好地理解编程语言的特性和用法。遇到困难时,不妨向社区求助,比如在StackOverflow上提问,通常会有经验丰富的程序员愿意提供帮助。
总之,编程是一个不断学习和实践的过程,遇到问题时不要气馁,耐心分析和解决,才能不断进步。
>>> phrase_words
['red car', 'no lake', 'newjersey turnpike']
>>> lines
['i have a red car which i drove on newjersey', 'turnpike. when i took exit 39 there was no', 'lake. i drove my car on muddy roads which turned my red', 'car into brown. driving on newjersey turnpike can be confusing.']
>>> text = " ".join(lines) #join them in a str.
>>> {phrase: text.count(phrase) for phrase in phrase_words}
{'newjersey turnpike': 2, 'red car': 2, 'no lake': 1}
1
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,因为它们涉及到一些复杂的概念或者用法。比如,有人可能在使用某个库时,发现它的某个功能没有按照预期工作,或者在运行代码时出现了错误。
在这种情况下,最好的办法就是去查找相关的资料,看看有没有人遇到过类似的问题,或者有没有解决方案。StackOverflow就是一个很好的地方,很多程序员会在这里分享他们的经验和解决方案。
如果你在某个特定的代码块中遇到了问题,比如
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> teststr = '''I have a red car which I drove on newjersey
... turnpike. When I took exit 39 there was no
... lake. I drove my car on muddy roads which turned my red
... car into brown. Driving on Newjersey turnpike can be confusing.
... '''
>>> teststr.count('Newjersey turnpike')
1
>>>
,你可以把这个代码块放到问题描述中,向其他人求助。这样,他们就能更好地理解你的问题,并给出更准确的建议。
总之,遇到问题时不要害怕,积极寻求帮助,很多人都愿意分享他们的知识和经验。