我遇到了一个问题,我需要在不使用Python中的split()
函数的情况下计算字符串中的字数。
我想到了一种方法,在这个方法中,我可以取一个变量word=0
,每次字符串中有一个空的空格,它就会递增,但它似乎不起作用,因为它总是给出的计数小于实际计数。在
s="the sky is blue"
def countW(s):
print(s)
word=0
for i in s:
if i==" ":
word=word+1
print(word)
countW(s)
我知道这是一个简单的问题,但我很难理解,我还可以考虑什么,以确保我得到正确的计数。 我考虑的第二种方法涉及太多的循环和数组创建,然后是反字符串转换。 有谁能告诉我一个更简单的方法,我不增加时间复杂性。在
最简单的有状态的有限自动机-字内或外。伪代码:
您还可以使用^{} ,根据字符是否为字母数字分组,并将所有值相加(
True
等于1
)。在计算空格数是一种很好的方法,在大多数情况下都有效。当然你得加1才能得到正确的字数。在
但是,由于您似乎关心格式不好的字符串,因此必须考虑多个空格、开头和结尾的空白以及标点符号。在
如果您不想使用正则表达式(如Ezsrac的答案),这里有一个替代方法,它将字符、数字和下划线的组合视为单词,就像
\w
一样。它只统计单词字符和非单词字符之间的所有转换。结尾需要特别注意结尾处的非单词字符(例如"a a "
与"a a"
)。在以下是一些测试用例:
^{pr2}$如果您还想包含其他字符,您可以简单地扩展
is_word_character
函数,但是要知道,如果不使用非常先进的技术,就不可能考虑所有的角点情况。例如,{cd6>}。这样一个简单的程序不可能识别出第一个是复合形容词,而第二个是由两个连接不好的句子组成的。在相关问题 更多 >
编程相关推荐