对于尝试在网站上尝试解决的特定问题,我没有获得期望的输出。这是问题所在:
让我们考虑使用Caps Lock键输入了一个单词 意外打开,如果:
它只包含大写字母;或除以下所有字母 第一个是大写的。在这种情况下,我们应该自动 更改所有字母的大小写。例如,字母的大小写 应该更改形式单词“ hELLO”,“ HTTP”,“ z”。
编写一个应用上述规则的程序。如果规则 无法应用,程序应保持原样。
我尝试使用以下代码,但我不明白为什么它不起作用,我认为应该如此。
echo "√" | iconv -f UTF-8 | tr '√' 'REPLACED' | ed -s /report.txt
sed -i 's/√/REPLACED/g' /report.txt
perl -pi -e 's/√/REPLACED/g' /report.txt
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)
答案 0 :(得分:3)
第一个正则表达式:r'[a-z]+[A-Z]+'
匹配以一个或多个小写字母开头,然后是一个或多个大写字母开头的字符串。
第二个正则表达式r'[A-Z]+'
与以一个或多个大写字母开头的字符串匹配。
您可以将它们组合为:r'[a-z]?[A-Z]+'
,它匹配以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)