在Scala中,我可以测试一个字符串是否有这样的大写字母:
{"G":[{"option1":"1.5 hour","Question1":"HI","answer":"OptionC","option3":"1hour","option4":"None","option2":"2hour"},{"option1":15,"Question1":"jkl","answer":"OptionD","option3":25,"option4":70,"option2":45},{"option1":"Oil lamp","Question1":"jkl","answer":"OptionD","option3":"Newspaper","option4":"None","option2":"kindling wood"}],"Sports":[{"option1":"FNLAKDS","Question1":"gk1","option3":"ram","option4":"ram","option2":"ram"},{"option1":"FNLAKDS","Question1":"gk2","option3":"ram","option4":"ram","option2":"ram"},{"option1":"FNLAKDS","Question1":"gk3","option3":"ram","option4":"ram","option2":"ram"}]}
我能想到的Python中最全面的形式是:
val nameHasUpperCase = name.exists(_.isUpper)
有点笨拙。有没有更好的方法来做到这一点? (它只是一个不太重要的脑筋急转弯:)
答案 0 :(得分:7)
最接近Scala语句的可能是any(..)
语句:
any(x.isupper() for x in a)
这将使用生成器:从找到此元素的那一刻起,any(..)
将停止并返回True
。
这会产生:
>>> a ='asdFggg'
>>> any(x.isupper() for x in a)
True
或另一个map(..)
:
any(map(str.isupper,a))
答案 1 :(得分:3)
另一种方法是将原始字符串与完全小写的字符串进行比较:
>>> a ='asdFggg'
>>> a == a.lower()
False
如果您希望此返回true,请使用!=
代替==
答案 2 :(得分:1)
还有
nameHasUpperCase = bool(re.search(r'[A-Z]', name))