亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python,檢查一個字符串有多少是大寫的?

Python,檢查一個字符串有多少是大寫的?

守候你守候我 2021-08-24 17:11:29
我有一個文本,我想知道是否全部或大于 50% 的百分比是大寫的。多弗朗明哥帶觸摸屏 lorem ipsum我嘗試使用正則表達式(在此處找到解決方案):rx = re.compile(r"^([A-Z ':]+$)", re.M) upp = rx.findall(string)但這會找到所有大寫字母,我不知道是全部還是超過 50%(包括全部)都是大寫的?我只想給字母編號(所以沒有數字、空格、新行等)
查看完整描述

3 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

您可以使用filter和str.isalpha清除非字母字符并str.isupper計算大寫字符并計算比率:


s = 'DOFLAMINGO WITH TOUCH SCREEN lorem ipsum'


alph = list(filter(str.isalpha, s))  # ['D', ..., 'O', 'W', ..., 'N', 'l', 'o', ...]

sum(map(str.isupper, alph)) / len(alph)

# 0.7142857142857143

另請參見上的文檔sum和map您可能經常使用發現自己。此外,這使用了bool作為 的子類int的事實,并且為求和進行了適當的轉換,這對于某些人來說可能過于隱含。


查看完整回答
反對 回復 2021-08-24
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

正則表達式在這里似乎有點矯枉過正。您可以使用sum生成器表達式:


x = 'DOFLAMINGO WITH TOUCH SCREEN lorem ipsum'


x_chars = ''.join(x.split())  # remove all whitespace

x_upper = sum(i.isupper() for i in x_chars) > (len(x_chars) / 2)

或功能上通過map:


x_upper = sum(map(str.upper, x_chars)) > (len(x_chars) / 2)

或者,通過statistics.mean:


from statistics import mean


x_upper = mean(i.isupper() for i in s if not i.isspace()) > 0.5


查看完整回答
反對 回復 2021-08-24
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

使用正則表達式,這是您可以做到的一種方式(假設這s是有問題的字符串):


upper = re.findall(r'[A-Z]', s)

lower = re.findall(r'[a-z]', s)

percentage = ( len(upper) / (len(upper) + len(lower)) ) * 100

它找到大寫和小寫字符的列表,并使用它們的長度獲取百分比。


查看完整回答
反對 回復 2021-08-24
  • 3 回答
  • 0 關注
  • 237 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號