Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中检查字符是否为大写?_Python_String - Fatal编程技术网

如何在Python中检查字符是否为大写?

如何在Python中检查字符是否为大写?,python,string,Python,String,我有一根这样的绳子 >>> x="Alpha_beta_Gamma" >>> words = [y for y in x.split('_')] >>> words ['Alpha', 'beta', 'Gamma'] 我希望输出表明X是不一致的,因为列表单词的第二个元素以小写开头,如果字符串X=“Alpha_Beta_Gamma”,那么它应该打印一致的字符串您可以使用此正则表达式: ^[A-Z][a-z]*(?:_[A-Z][a-z]*)

我有一根这样的绳子

>>> x="Alpha_beta_Gamma"
>>> words = [y for y in x.split('_')]
>>> words
['Alpha', 'beta', 'Gamma']

我希望输出表明X是不一致的,因为列表单词的第二个元素以小写开头,如果字符串
X=“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"

所示,要测试所有单词是否以大写开头,请使用以下命令:

print all(word[0].isupper() for word in words)
也许你想要

您可以使用以下代码:

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'])
通过这种方式,您可以知道是否有效以及哪些单词是错误的

使用列表(str)将字符分解,然后导入字符串并使用string.ascii_大写字母进行比较

检查字符串模块:


所以你可以用一个字符串来写它

那么x=“Alpha_BEta_Gamma”呢?好的捕获量Alpha_BEta_Gamma是无效的,因为它应该是Alpha_BEta_Gamma@cris:它与问题完全无关,当然不值得使用py3k标记。@SilentGhost:你说的py3k标记与主要问题无关是对的,但是我添加它是因为她在
print
方面的问题。部分代码效率低下。您可以将其替换为
word[0].isupper()
,另一部分替换为
word[1:][.islower()
@lisa:print是Python 3中的一个函数。请不要在这里直接键入代码而不首先思考并将Python2内容(如print语句)更改为Python3内容(如print函数)。也请不要说“给我一个错误”。请提供具体的错误。@S.Lott感谢您的指导,那么在这里发布错误的预期标准是什么呢?>>x=“Alpha_beta_Gamma”>>>>words=[y代表y在x.split('''']>>>print all(word[0].isupper()代表words)文件“”,第1行全部打印(word[0].isupper()代表words)^SyntaxError:无效syntax@lisa:您有一个非常旧的Python版本(@lisa:在Python3中使用
print(all…
),因为
print
是一个函数,而不是一个语句。@THC4K:顺便说一句,Python的旧版本没有
all()
。它现在或曾经在谷歌提供的库中。@Cristian Ciupitu:啊,你是对的,在Python3中它也会因语法错误而失败。我只是猜测问题在于缺少生成器表达式。+1但对于非英语字符,例如“lălalt”,它可能会失败.嗯,嗯,我必须标记正确,尽管根据我给出的原始要求,这里的所有答案都是正确的。嗯,我必须标记你的答案是正确的,尽管根据我给出的原始要求,这里的所有答案都是正确的。我想你是倒过来的——OP似乎希望它打印为真,当且仅当第一个l每个单词的字母(没有其他字母)都是大写的,而对于你的单词,即使不满足条件,它也会打印为真。此外,这是奇怪的python,看起来更像java而不是py…列表理解会更像python。
>>> 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
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'])
x="Alpha_beta_Gamma"
is_uppercase_letter = True in map(lambda l: l.isupper(), x)
print is_uppercase_letter
>>>>True