我有这样的字符串
>>> x="Alpha_beta_Gamma"
>>> words = [y for y in x.split('_')]
>>> words
['Alpha', 'beta', 'Gamma']
我想要输出说X不符合要求,因为列表单词的第二个元素以小写开头,如果字符串x = "Alpha_Beta_Gamma"则应打印符合要求的字符串
我有这样的字符串
>>> x="Alpha_beta_Gamma"
>>> words = [y for y in x.split('_')]
>>> words
['Alpha', 'beta', 'Gamma']
我想要输出说X不符合要求,因为列表单词的第二个元素以小写开头,如果字符串x = "Alpha_Beta_Gamma"则应打印符合要求的字符串
print。
Answers:
也许你想要 str.istitle
>>> help(str.istitle)
Help on method_descriptor:
istitle(...)
S.istitle() -> bool
Return True if S is a titlecased string and there is at least one
character in S, i.e. uppercase characters may only follow uncased
characters and lowercase characters only cased ones. Return False
otherwise.
>>> "Alpha_beta_Gamma".istitle()
False
>>> "Alpha_Beta_Gamma".istitle()
True
>>> "Alpha_Beta_GAmma".istitle()
False
要测试所有单词都以大写字母开头,请使用以下命令:
print all(word[0].isupper() for word in words)
print all([word[0].isupper() for word in words])。
print(all...)因为它print是一个函数,而不是语句。
all()。它是或曾经在Google提供的图书馆中。
x="Alpha_beta_Gamma"
is_uppercase_letter = True in map(lambda l: l.isupper(), x)
print is_uppercase_letter
>>>>True
所以你可以写成一个字符串
words = x.split("_")
for word in words:
if word[0] == word[0].upper() and word[1:] == word[1:].lower():
print word, "is conformant"
else:
print word, "is non conformant"
word[0].isupper()。
word[1:].islower()
您可以使用以下代码:
def is_valid(string):
words = string.split('_')
for word in words:
if not word.istitle():
return False, word
return True, words
x="Alpha_beta_Gamma"
assert is_valid(x)==(False,'beta')
x="Alpha_Beta_Gamma"
assert is_valid(x)==(True,['Alpha', 'Beta', 'Gamma'])
这样,您就知道是否有效以及错误的单词
您可以使用此正则表达式:
^[A-Z][a-z]*(?:_[A-Z][a-z]*)*$
样例代码:
import re
strings = ["Alpha_beta_Gamma", "Alpha_Beta_Gamma"]
pattern = r'^[A-Z][a-z]*(?:_[A-Z][a-z]*)*$'
for s in strings:
if re.match(pattern, s):
print s + " conforms"
else:
print s + " doesn't conform"
如在键盘上所见
使用list(str)分解为字符,然后导入字符串并使用string.ascii_uppercase进行比较。
检查字符串模块:http : //docs.python.org/library/string.html