我是新手编码所以请原谅我,如果我问过已经回答的问题,但请相信我,我确实找到了答案,却找不到答案。
我有一个任务确定给定文本中有多少给定的单词。 Word可以是一个洞或其他单词的一部分。信件无关紧要。如果单词在文本中出现多次,则只应计算一次。 到目前为止,我设法做到了:
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”,但在第三种情况下,“sum”在“ipsum”中找到。这两个词都是大词的一部分,但首先没有找到,第二个是。 此外,在第二种情况下,结果应为2,因为有香蕉和香蕉,相似但不同。
提前致谢。
答案 0 :(得分:3)
使用sum
和生成器表达式,这似乎是最简单的解决方案:
text = text.lower()
count = sum(word in text for word in words)
# bools are cast to ints (0, 1) here
答案 1 :(得分:2)
首先 - 字符串是不可变的,因此text.lower()
本身不会更改text
,而是返回新实例 - lowercased。其他问题是if a in base
检查是否存在,没有信息多少次......
def count_words(text, words):
count = 0
lower_text = text.lower()
for w in words:
print w + " - " + str(lower_text.count(w))
print "1"
count_words("How aresjfhdskfhskd you?", {"how", "are", "you", "hello"})
print "2"
count_words("Bananas, give me bananas!!!", {"banana", "bananas"})
print "3"
count_words("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
{"sum", "hamlet", "infinity", "anything"})
答案 2 :(得分:1)
您的代码部分错误。试试这个:
Symbol_Table Table_obj;
这只适用于Python 2.7,但如果您使用的是Python 3+,则需要将最终的def count_words(text, words):
count = 0
lower_text = text.lower()
for w in words:
if w in lower_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"})
更改为print
。