python中的省略号计数
我想写一个计算句子的程序。边界是(!|.|?|…)。巨蟒只算数!和。还有?。我该怎么数数。。。也我试着用通常的形式写,但它用省略号来计算每个点。请给我一个建议python中的省略号计数,python,counter,Python,Counter,我想写一个计算句子的程序。边界是(!|.|?|…)。巨蟒只算数!和。还有?。我该怎么数数。。。也我试着用通常的形式写,但它用省略号来计算每个点。请给我一个建议 f = input ("text") znak = 0 for s in f: i = s.find('.') if i > -1: znak += 1 else: i = s.find('!') if i > -1: znak += 1 else
f = input ("text")
znak = 0
for s in f:
i = s.find('.')
if i > -1:
znak += 1
else:
i = s.find('!')
if i > -1:
znak += 1
else:
i = s.find('?')
if i > -1:
znak += 1
else:
i = s.find('...')
if i> -1:
znak +=1
print('Предложений:', znak)
如果我正确理解了您的问题,您可以使用
string.count(substring)
:
这将产生:
如果我正确理解了您的问题,您可以使用
string.count(substring)
:
这将产生:
您可以使用类似的对于此,尽管您必须转义大多数字符,因为它们在正则表达式中具有特殊含义。重要提示:正则表达式必须在
之前包含..
,否则它将匹配..
为三个
而不是一个..
:
>>> import re
>>> s = "sentence with ! and ? and ... and ."
>>> p = re.compile(r"\.\.\.|\.|\!|\?")
>>> p.findall(s)
['!', '?', '...', '.']
>>> sum(1 for _ in p.finditer(s))
4
或结合:
您可以使用类似的对于此,尽管您必须转义大多数字符,因为它们在正则表达式中具有特殊含义。重要提示:正则表达式必须在
之前包含..
,否则它将匹配..
为三个
而不是一个..
:
>>> import re
>>> s = "sentence with ! and ? and ... and ."
>>> p = re.compile(r"\.\.\.|\.|\!|\?")
>>> p.findall(s)
['!', '?', '...', '.']
>>> sum(1 for _ in p.finditer(s))
4
或结合:
您当前的代码似乎一次迭代输入文本一个字符。一个字符永远不会包含…
,因为它有三个字符长。您还有一个问题,..
由
字符组成,因此除非您特别小心,否则最终会重复计算字符数。您使用else
,因此这只计算它找到的列表中的第一项。这是一个单点。代码的其余部分永远不会执行。(您还需要一个循环。查找如何使用find
)您当前的代码似乎一次只在输入文本上迭代一个字符。一个字符永远不会包含…
,因为它有三个字符长。您还有一个问题,..
由
字符组成,因此除非您特别小心,否则最终会重复计算字符数。您使用else
,因此这只计算它找到的列表中的第一项。这是一个单点。代码的其余部分永远不会执行。(您还需要一个循环。查看如何使用find
)OP自己的尝试仍然可以挽救,尽管(当然)这是“更好”的方法。@usr2564301我知道这不是最好的答案,我相信使用regex可以更容易地做到这一点。可悲的是,我的regex fu不是最好的。但它比OP的帖子可读性好得多。没问题,替代品总是很受欢迎的。只是您的代码与OP的截然不同——它引入了OP可能尚未涉及的概念。。。我认为正则表达式可以做到这一点,但你不能使用列表理解。非常感谢!它真的很有用!没问题。如果您找到了解决方案,请单击您认为最有帮助的答案旁边的复选标记。OP自己的尝试仍然是可以挽救的,尽管(当然)这是“更好”的方法。@usr2564301我知道这不是最好的答案,我相信使用正则表达式可以更轻松地做到这一点。可悲的是,我的regex fu不是最好的。但它比OP的帖子可读性好得多。没问题,替代品总是很受欢迎的。只是您的代码与OP的截然不同——它引入了OP可能尚未涉及的概念。。。我认为正则表达式可以做到这一点,但你不能使用列表理解。非常感谢!它真的很有用!没问题。如果您找到了解决方案,请单击您认为最有帮助的答案旁边的复选标记。我尝试使用正则表达式,但失败了(()我不太了解python的语法。我尝试使用正则表达式,但失败了(()我不太了解python的语法。
>>> import re
>>> s = "sentence with ! and ? and ... and ."
>>> p = re.compile(r"\.\.\.|\.|\!|\?")
>>> p.findall(s)
['!', '?', '...', '.']
>>> sum(1 for _ in p.finditer(s))
4
>>> Counter({'!': 1, '...': 1, '?': 1, '.': 1})
Counter({'!': 1, '...': 1, '?': 1, '.': 1})