我有一系列類似的字符串:如何計算忽略重複項的字符串末尾的特定字符數?
my_text = "one? two three??"
我想只計算有多少?在字符串的末尾。上面應該返回2(而不是3)。
我試過到目前爲止:
my_text.count("?") # returns 3
我有一系列類似的字符串:如何計算忽略重複項的字符串末尾的特定字符數?
my_text = "one? two three??"
我想只計算有多少?在字符串的末尾。上面應該返回2(而不是3)。
我試過到目前爲止:
my_text.count("?") # returns 3
有沒有爲它內置的方法。但一些簡單的像這應該做的伎倆:
>>> len(my_text) - len(my_text.rstrip('?'))
2
您還可以使用正則表達式來計算尾隨問號數量:
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
不那麼幹淨,但簡單的方法:
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
單行使用我最喜歡的itertools:
首先反轉字符串,然後繼續ite評分(取值),同時滿足條件(值=='?')。這返回一個迭代器,我們用盡了一個列表並最終得到它的長度。
len(list(itertools.takewhile(lambda x:x=='?',reversed(my_text))))
這不是重複的。即使他們的頭銜相似,他們也需要相同的答案,但這個問題實際上還不清楚。 – Optimus