【发布时间】:2016-09-09 14:07:02
【问题描述】:
我是编码新手,所以如果我问一些已经回答的问题,请原谅我,但请相信我确实搜索了答案但找不到它。
我的任务是计算给定文本中有多少给定单词。单词可以是一个洞或其他单词的一部分。字母大小写无关紧要。如果单词在文本中出现多次,则只计算一次。 到目前为止,我设法做到了这一点:
def count_words(text, words):
count = 0
text = text.lower()
for w in words:
if w in text:
count =+ 1
print (count)
count_words("How aresjfhdskfhskd you?", {"how", "are", "you", "hello"})
count_words("Bananas, give me bananas!!!", {"banana", "bananas"})
count_words("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
{"sum", "hamlet", "infinity", "anything"})
使用该代码,我设法将所有树文本的最终计数为 1,并且只有三分之一是可以的。
在我看来,我的第一个问题是我的 text.lower() 没有做任何事情,我认为它应该降低所有情况。
我的第二个问题是,在第一种情况下,在“aresjfhdskfhskd”中找不到“are”,但在第三种情况下,在“ipsum”中找到了“sum”。这两个词都是大词的一部分,但第一个没有找到,第二个是。 另外,在第二种情况下,结果应该是 2,因为有香蕉和香蕉,相似但不同。
提前致谢。
【问题讨论】:
-
我还不确定第二个和第三个问题,但
text.lower()不会修改字符串。它返回字符串,但是是小写的。使用text = text.lower() -
关键错误是
count = +1与count += 1。 -
谢谢你们。这解决了部分问题。
-
除计数错误外,将for语句更改为
for w in words.lower()。你的“单词”总是小写吗?否则你也必须给他们打电话lower()。
标签: python string search count