[英]Using re.match() to fix string capitalization
我沒有嘗試在網站上嘗試解決的特定問題,因此無法獲得期望的輸出。 這是問題所在:
讓我們考慮一下在以下情況下使用大寫鎖定鍵意外鍵入了一個單詞:
它僅包含大寫字母; 或除第一個字母外的所有字母均為大寫。 在這種情況下,我們應該自動更改所有字母的大小寫。 例如,應該更改構成單詞“ hELLO”,“ HTTP”,“ z”的字母的大小寫。
編寫一個應用上述規則的程序。 如果無法應用該規則,則程序應保持單詞不變。
我嘗試使用以下代碼,但我不明白為什么它不起作用,我認為應該如此。
import re
word = input()
exp = r'[a-z]+[A-Z]+'
exp2 = r'[A-Z]+'
if bool(re.match(word, exp)) or bool(re.match(word, exp2)):
print(word[0].upper() + word[1:].lower())
else:
print(word)
Input:CAPS
Desired output: Caps
Current output: CAPS
Input:cAPS
Desired output: Caps
Current output: cAPS
Input:cAPSlOCK
Desired output:cAPSlOCK
Current output: cAPSlOCK
第一個正則表達式: r'[az]+[AZ]+'
匹配一個字符串,該字符串以一個或多個小寫字母開頭,然后是一個或多個大寫字母。
第二個正則表達式r'[AZ]+'
匹配以一個或多個大寫字母開頭的字符串。
您可以將它們組合為: r'[az]?[AZ]+'
,它匹配以0或1個小寫字母開頭,然后是一個或多個大寫字母的字符串。
其次,調用re.match()
時參數順序錯誤。 第一個參數應為正則表達式,第二個參數應為字符串: re.match(exp,word)
工作實施:
import re
word = input()
exp = r'[a-z]?[A-Z]+'
if bool(re.match(exp,word)):
print(word[0].upper() + word[1:].lower())
else:
print(word)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.