- 你可以使用下列选项之一来计算字符串中的单词数。
- 方法1:使用
split()和len() - 方法2:使用regex
- 方法3:使用For Loop
- 方法4:使用
count - 方法5:使用
sum
- 方法1:使用
问题的提出
给出一个字符串 -sentence 。
这个字符串句子里有多少个单词?
例子。
| INPUT sentence = "掘金很好用" 输出 词的数量:5 =========================================INPUTsentence = ""Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor incididuntut labore et dolore magna aliqua."" OUTPUTNumber of words:19 =========================================INPUTsentence=”” OUTPUTNumber of words:19 |
方法1:使用 split() 和 len()
先决条件
split()是Python中的一个内置方法,它在一个给定的分隔符处分割字符串,并返回一个子字符串的分割列表。- Python 的内置函数
len()返回给定的字符串、数组、列表、元组、字典或任何其它可迭代的长度。返回值的类型是一个整数,代表这个可迭代的元素的数量。
方法。要 分离出给定字符串中的每个单词,请使用split() 方法。这将返回一个包含给定字符串中所有单词的列表。然后在len() 方法的帮助下找出这个列表的长度,以返回给定字符串中的单词数。
sentence = "Hello world"
words = len(sentence.split())
print("Number of words:", words)
输出。
Number of words: 2
**方法2:**使用regex
方法。
- Python的
[re.findall(pattern, string)](https://blog.finxter.com/python-re-findall/)确定一个字符串中给定模式的匹配数量。使用简单的字词模式匹配("\w")来找到在给定字符串中代表一个字的所有字符串。 - 结果是一个包含给定字符串中存在的单词的匹配列表-该列表的长度是给定字符串中单词出现的次数,从而得出解决方案。
- 语法。
len(re.findall(c, s)).
代码::
import re
sentence = "Hello world"
words = len(re.findall(r'\w+', sentence))
print("Number of words:", words)
输出。
Number of words: 2
方法3:使用For Loop
方法 这里的想法是找出空格字符、制表符字符和换行符的出现次数,然后找出它们的总和来推算输出。这是基于这样一个事实:计算一个给定字符串中的总字数将返回空格/制表符/换行符分开的子串的数量。
解释一下。
-
初始化一个计数器,它将追踪给定字符串中的字数。
-
使用for循环来遍历给定字符串的所有字符。
-
一旦发现空格、制表符或换行符,立即增加计数器变量。
-
最后,检查给定的字符串是否为空。
-
如果给定的字符串是空的,则输出显示为0,因为该字符串中没有字符。
-
如果字符串不是空的,则显示结果,这样的字数将通过将计数器的计算值增加1来给出。 这是因为如果某个字符串有三个字,那么它将被两个空格分开。因此,单词数总是比给定句子中的空格数多一个。
- 例子。给定一个字符串:"One Two Three." 这里的空格数是两个,而单词数是三个。
-
代码。
sentence = ""
words = 0
for i in sentence:
if i == " " or i == "\t" or i == "\n":
words += 1
if len(sentence) > 0:
print("Number of words:", words + 1)
else:
print("Number of words: 0")
输出。
Number of words: 0
**方法4:**使用计数
方法 Python的[str.count(sub)](https://blog.finxter.com/python-string-count/)方法计算一个子串的非重叠出现的次数。因此,如果你在count() 方法的帮助下计算给定字符串中出现的换行符、空格和制表符的数量,它将返回给定字符串中存在的总字数。请注意,count变量返回的值将比给定字符串中的总字数少一个。因此,在返回输出之前,你必须在计算值上加一。
代码。
sentence = """Lorem ipsum dolor sit amet.
Consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua."""
spaces = sentence.count(' ')
tabs = sentence.count('\t')
newlines = sentence.count('\n')
words = spaces+tabs+newlines
if sentence:
print("Number of words: ", words+1)
else:
print("Number of words: 0")
输出。
Number of words: 19
解释。
- 使用**count()**方法来查找字符串中空格、制表符和换行符的出现次数。由于你不能在
count方法中一次性计算出所有这些字符的数量,因此你必须逐个计算它们的出现次数。然后,你可以简单地将每个出现的字符相加,找出它们在给定字符串中出现的净值。 - 最后,检查给定的字符串是否为空。
- 如果给定的字符串是空的,则输出显示为0,因为该字符串中没有字符。
- 如果给定的字符串不是空的--通过在count方法计算的值的总和上加1来返回输出。
方法5:使用sum
方法 这里的想法与上面解释的类似。唯一不同的是,在这种情况下,我们在一行代码中使用sum 函数来计算(空格字符+制表符+换行符)的结果数。
代码
sentence = """Lorem ipsum dolor sit amet.
Consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua."""
if sentence:
x = sum(1 for c in sentence if c in ' \t\n')
print("Number of words: ", x+1)
else:
print("Number of words: 0")
输出。
Number of words: 19
对数字进行求和是在实际代码项目中需要反复进行的重复性工作之一。为了可以简明、可读和高效的方式完成这项任务,Python 的创造者增加了内置的sum() 函数。它对 Python 列表中的所有元素进行求和,或者对任何其他可迭代的元素进行求和。(Official Docs)
在这里阅读。Python sum() - 一个简单的图解指南