给出单词数量的函数

时间:2017-10-29 12:52:04

标签: python string search words

我正在做一个能给出句子中单词数量的函数。 示例:"你好世界"有3个单词" (一封信就像一个字一样计算。)

这是我的代码:

def number_of_word(s):
"""
   str -> int
    """
# i : int
i = 0

# nb_word : int
nb_word = 0

if s == "":
    return 0
else:

    while i < len(s)-1:
        if ((s[i] != " ") and (s[i+1] == " ")):
            nb_word = nb_word + 1
            i = i + 1
        else:
            i = i + 1

    if s[len(s)-1] != " ":
        nb_word = nb_word + 1
        return nb_word
    else:
        return nb_word

我尝试了我的功能,我认为它有效。但是,我也认为有一种更好的方法来做一个以更简单的方式做同样事情的函数。

你能告诉我你是否知道一个更好的功能?或者对我的任何评论?

我要使用:

if s == "":
    return 0
else:
      ...........

因为如果我没有,我的功能对number_of_word("")

不起作用

6 个答案:

答案 0 :(得分:4)

如果将单词定义为由一个或多个空格分隔的字符序列,则只需使用split字符串方法分割为单词, 然后len得到他们的计数:

def number_of_word(s):
    return len(s.split())

从文档(强调我的):

  split(...)实例

builtins.str方法      

S.split(sep=None, maxsplit=-1) - &gt;字符串列表

     

使用S作为分隔符字符串,返回sep中单词的列表。   如果给出maxsplit,则最多maxsplit次分割完成。 如果sep不是   指定或是None,任何空格字符串都是分隔符并且为空   字符串将从结果中删除。

答案 1 :(得分:2)

如果您愿意,可以使用RegExp

import re

def number_of_word(s):
    pattern = r'\b\w+\b'
    return len(re.findall(pattern, s))

答案 2 :(得分:1)

如果你不能使用split或regex,我认为这是正确的解决方案:

$sudo pip install setuptools

答案 3 :(得分:0)

您可以使用split()方法:

def count(string1):
    string1=string1.split()
    return len(string1)
print(count(" Hello L World "))

输出:

3

答案 4 :(得分:0)

我不能使用更多python'功能而不仅仅是“len”。 所以,我不能使用split或RegExp。

所以我想用基本代码和len来实现这个功能。

答案 5 :(得分:0)

嗯,既然发布了这些要求,可以在不调用任何库函数的情况下执行此操作:

def count_words(sentence):
    count, white = 0, True
    for character in sentence:
        if character not in " \t\n\r":
            if white:
                count += 1
                white = False
        else:
            white = True
    return count