在Python中计算字符串中的单词

时间:2014-08-21 11:42:32

标签: python string

我需要编写一个程序,要求输入一个字母和输入。我需要找到包含该特定字母的单词的数量,并列出这些单词。到目前为止,我已经能够列出包含该特定字母的单词,但是我找不到包含该特定字母的单词数量。

到目前为止,我的代码是:

a = input("Letter: ")  
b = input("Input: ")  
a=a.lower() 
b=b.lower()  
c=b.count(a)
print(c)  
words = b.split()  
print(' '.join([word for word in words if a in word]))

输出是这样的:

Letter: e 
Input: ee eeeee the 
8 
ee eeeee the

然而,答案应该是3而不是8,因为只有3个单词包含字母'e'。

所以,我可以帮助解决问题。

感谢。

5 个答案:

答案 0 :(得分:4)

a ="ee eeeee the"

print sum("e" in x for x in a.split())
3

拆分单词并检查每个单词中是否e并使用sum来获得总数。

b.count(a)计算信件的每一次出现。

In [1]: a ="ee eeeee the"

In [2]: a.split()
Out[2]: ['ee', 'eeeee', 'the'] # splits into individual words
In [3]: sum("e" in x for x in a.split()) # e is in all three words so sum returns 3
Out[3]: 3

您也可以更改代码并使用len()

final_words = [word for word in words if a in word]
c = len(final_words)
print c
final  = (' '.join(final_words))
print final

答案 1 :(得分:1)

您目前的写作方式是,您正在计算字母e的所有出现次数。您只需要检查单词是否包含字母,然后转到下一个单词。

>>> a = 'a'
>>> s = 'aaa bbb ccc ddd eaa faa abc'

>>> words = s.split()
>>> words
['aaa', 'bbb', 'ccc', 'ddd', 'eaa', 'faa', 'abc']

>>> len(filter(lambda i : a in i, words))
4

作为一项功能

def wordCounter(letter, sentence):
    wordList = sentence.split()
    return len(filter(lambda word : letter in word, wordList))

测试功能

>>> wordCounter(a, s)
4

>>> wordCounter('e', 'ee eeeee the')
3

答案 2 :(得分:1)

你非常接近,除了你应该计算你在最后一行创建的列表中的元素数量。这应该工作:

a = input("Letter: ")  
b = input("Input: ")  
a=a.lower() 
b=b.lower()  
words = [word for word in b.split() if a in word]  
print(len(words))
print(' '.join(words))

答案 3 :(得分:0)

found = [word for word in words if a in word]
num = len(found)

print num
print ' '.join(found)

答案 4 :(得分:0)

更改     c=b.count(a) 喜欢的东西     c = sum(a in word for word in b.split())