Considere as possibilidades de (1) caracteres que não são letras e (2) letras que não possuem maiúsculas e minúsculas.
John Machin
Respostas:
174
Existem vários "métodos is" nas strings. islower()e isupper()deve atender às suas necessidades:
>>> 'hello'.islower()
True>>> [m for m indir(str) if m.startswith('is')]
['isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper']
Aqui está um exemplo de como usar esses métodos para classificar uma lista de strings:
>>> words = ['The', 'quick', 'BROWN', 'Fox', 'jumped', 'OVER', 'the', 'Lazy', 'DOG']
>>> [word for word in words if word.islower()]
['quick', 'jumped', 'the']
>>> [word for word in words if word.isupper()]
['BROWN', 'OVER', 'DOG']
>>> [word for word in words ifnot word.islower() andnot word.isupper()]
['The', 'Fox', 'Lazy']
Oi. obrigado pela resposta curta. Mas como classifico palavras com maiúsculas? Por exemplo: 'Palavra mista'. Parece que o terceiro exemplo se encaixa em todas as combinações possíveis de palavras mistas, exemplo: "mIxEd WoRD" ..
Swadhikar
10
'hello'.istitle ()
Stephen de
1
Eu quero dar uma mensagem para usar o remódulo para isso. Especialmente no caso de diferenciação de maiúsculas e minúsculas.
Usamos a opção re.IGNORECASE ao compilar o regex para uso em ambientes de produção com grandes quantidades de dados.
>>> import re
>>> m = ['isalnum','isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'ISALNUM', 'ISALPHA', 'ISDIGIT', 'ISLOWER', 'ISSPACE', 'ISTITLE', 'ISUPPER']
>>>
>>>
>>> pattern = re.compile('is')
>>>
>>> [word for word in m if pattern.match(word)]
['isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper']
No entanto, tente sempre usar o inoperador para comparação de strings, conforme detalhado nesta postagem
Respostas:
Existem vários "métodos is" nas strings.
islower()
eisupper()
deve atender às suas necessidades:>>> 'hello'.islower() True >>> [m for m in dir(str) if m.startswith('is')] ['isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper']
Aqui está um exemplo de como usar esses métodos para classificar uma lista de strings:
>>> words = ['The', 'quick', 'BROWN', 'Fox', 'jumped', 'OVER', 'the', 'Lazy', 'DOG'] >>> [word for word in words if word.islower()] ['quick', 'jumped', 'the'] >>> [word for word in words if word.isupper()] ['BROWN', 'OVER', 'DOG'] >>> [word for word in words if not word.islower() and not word.isupper()] ['The', 'Fox', 'Lazy']
fonte
Eu quero dar uma mensagem para usar o
re
módulo para isso. Especialmente no caso de diferenciação de maiúsculas e minúsculas.Usamos a opção re.IGNORECASE ao compilar o regex para uso em ambientes de produção com grandes quantidades de dados.
>>> import re >>> m = ['isalnum','isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'ISALNUM', 'ISALPHA', 'ISDIGIT', 'ISLOWER', 'ISSPACE', 'ISTITLE', 'ISUPPER'] >>> >>> >>> pattern = re.compile('is') >>> >>> [word for word in m if pattern.match(word)] ['isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper']
No entanto, tente sempre usar o
in
operador para comparação de strings, conforme detalhado nesta postagemoperação mais rápida-re-match-or-str
Também detalhado em um dos melhores livros para começar a aprender python com
idiomática-python
fonte