如何在python中计算后缀?

时间:2015-02-06 14:30:57

标签: python string

我正在做一些事情,首先我必须拆分一个字符串(它是一个paragaph),然后取下每个字符串的标点符号。为此,我做了以下事情:

a = string1.split()

print(a)

punc = "?.,!"

a = ["".join(c for c in s if c not in punc) for s in a]

print(a)

在此之后,我必须计算“ing”中有多少单词结束。我尝试了各种各样的方法,但由于某些原因,当他们应该数10时,他们总是数为0.这是我最近的尝试:

suffix = "ing"

suffix_count = 0

if any (''.endswith(suffix) for s in a):

    suffix_count += 1

print ("Found {} words ending in ing".format(suffix_count))

我做错了什么?

4 个答案:

答案 0 :(得分:3)

而不是

if any (''.endswith(suffix) for s in a):
    suffix_count += 1

suffix_count = sum(1 for s in a if s.endswith(suffix))

您的代码存在的问题是,您要检查空字符串是否以'后缀'结尾? (这总是错误的)但是即使你正确地检查了这一点:你只需要将suffix_count增加一次,而不是多少字符串以'后缀'结尾。

答案 1 :(得分:1)

你可以这样做:

suffix_count = len([s for s in a if s.endswith(suffix)])

只需形成以后缀结尾的所有字符串的列表,然后计算该列表的长度,这当然是以后缀结尾的字符串数。我认为它比明确的for循环更清晰。

答案 2 :(得分:1)

使用rstrip删除punc和sum的方法更简单,因此我们不需要遍历每个字符:

sum(s.rstrip(punc).endswith("ing") for s in a)

因此,您的双循环可以替换为以下内容以删除punc:

a = [s.rstrip(punc) for s in a]

同样使用string.punctuation可能会更好:

from string import punctuation
a = [s.rstrip(punctuation) for s in a]

答案 3 :(得分:0)

试试这个:

a = ["singing", "dancing", "playing"]

suffix = "ing"

suffix_count = 0

for s in a:
    if s.endswith(suffix):
        suffix_count += 1

print ("Found {} words ending in ing".format(suffix_count))

对我而言,打印3。

希望有所帮助