2017-02-11 36 views
4

我有一系列類似的字符串:如何計算忽略重複項的字符串末尾的特定字符數?

my_text = "one? two three??" 

我想只計算有多少?在字符串的末尾。上面應該返回2(而不是3)。

我試過到目前爲止:

my_text.count("?") # returns 3 
+0

這不是重複的。即使他們的頭銜相似,他們也需要相同的答案,但這個問題實際上還不清楚。 – Optimus

回答

9

有沒有爲它內置的方法。但一些簡單的像這應該做的伎倆:

>>> len(my_text) - len(my_text.rstrip('?')) 
2 
1

您還可以使用正則表達式來計算尾隨問號數量:

import re 

def count_trailing_question_marks(text): 
    last_question_marks = re.compile("\?*$") 
    return len(last_question_marks.search(text).group(0)) 

print count_trailing_question_marks("one? two three??") 
# 2 
print count_trailing_question_marks("one? two three") 
# 0 
0

不那麼幹淨,但簡單的方法:

my_text = "one? two three??" 

total = 0 
question_mark = '?' 
i = 0 
for c in my_text: 
    i -= 1 
    if my_text[i] == question_mark: 
     total += 1 
    else: 
     break 
0

單行使用我最喜歡的itertools:

首先反轉字符串,然後繼續ite評分(取值),同時滿足條件(值=='?')。這返回一個迭代器,我們用盡了一個列表並最終得到它的長度。

len(list(itertools.takewhile(lambda x:x=='?',reversed(my_text)))) 
相關問題