Como você verifica se uma string contém apenas números?
Eu dei uma chance aqui. Eu gostaria de ver a maneira mais simples de conseguir isso.
import string
def main():
isbn = input("Enter your 10 digit ISBN number: ")
if len(isbn) == 10 and string.digits == True:
print ("Works")
else:
print("Error, 10 digit number was not inputted and/or letters were inputted.")
main()
if __name__ == "__main__":
main()
input("Press enter to exit: ")
False
poisstring.digits == True
sempre é avaliado comoFalse
.Respostas:
Você deseja usar o
isdigit
método em seustr
objeto:A partir da
isdigit
documentação :fonte
isdigit
, mas gera aValueError
se passada paraint()
.Use
str.isdigit
:fonte
try: assert str(int(foo)) == foo; except (AssertionError,ValueError): #handle
e me senti feio como pecado. Obrigado!Use a função string isdigit :
fonte
Você também pode usar o regex,
por exemplo: -1) palavra = "3487954"
por exemplo: -2) palavra = "3487.954"
por exemplo: -3) palavra = "3487.954 328"
Como você pode ver todos os 3, por exemplo, significa que apenas não há na sua string. Então você pode seguir as respectivas soluções fornecidas com eles.
fonte
re.match('^[0-9\.]*$',word)
falha para carros alegóricos.if(bool(re.search(r'\d', word)))
funciona bem embora.Que tal números flutuantes , números negativos , etc. Todos os exemplos anteriores estarão errados.
Até agora, consegui algo assim, mas acho que poderia ser muito melhor:
retornará true somente se houver um ou não '.' na sequência de dígitos.
retornará falso
fonte
Como apontado neste comentário Como você verifica em python se uma string contém apenas números? o
isdigit()
método não é totalmente preciso para este caso de uso, porque retorna True para alguns caracteres semelhantes a dígitos:Se isso precisar ser evitado, a função simples a seguir verifica se todos os caracteres de uma string têm um dígito entre "0" e "9":
Usado no exemplo da pergunta:
fonte
all(ch in string.digits for ch in s)
.Você pode usar o bloco try catch aqui:
fonte
except ValueError:
int("1_000")
não leva a um erro, por exemplo.Como toda vez que encontro um problema com a verificação é porque o str pode ser None às vezes, e se o str puder ser None, use apenas str.isdigit () não é suficiente, pois você receberá um erro
e então você precisa primeiro validar o str é None ou não. Para evitar uma ramificação multi-if, uma maneira clara de fazer isso é:
Espero que isso ajude as pessoas a terem o mesmo problema que eu.
fonte
Existem 2 métodos em que posso pensar para verificar se uma string tem todos os dígitos de não
Método 1 (Usando a função isdigit () interna em python): -
Método 2 (Executando o tratamento de exceções na parte superior da seqüência de caracteres): -
A saída do código acima será:
fonte
você pode usar o método str.isdigit () ou o método str.isnumeric ()
fonte