tutorial - python wiki




O que significa% s em uma string de formato python? (5)

O que significa %s em Python? E o que faz o seguinte código?

Por exemplo...

 if len(sys.argv) < 2:
     sys.exit('Usage: %s database-name' % sys.argv[0])

 if not os.path.exists(sys.argv[1]):
     sys.exit('ERROR: Database %s was not found!' % sys.argv[1])

É uma sintaxe de formatação de string (que é emprestada de C).

Por favor, veja "PyFormat" :

Python suporta valores de formatação em strings. Embora isso possa incluir expressões muito complicadas, o uso mais básico é inserir valores em uma string com o marcador de posição %s .

Edit: Aqui está um exemplo muito simples:

#Python2
name = raw_input("who are you?")
print "hello %s" % (name,)

#Python3+
name = raw_input("who are you?")
print("hello %s" % (name,))

O token %s me permite inserir (e possivelmente formatar) uma string. Observe que o token %s é substituído por qualquer coisa que eu passe para a string após o símbolo % . Observe também que estou usando uma tupla aqui também (quando você só tem uma string usando uma tupla é opcional) para ilustrar que várias strings podem ser inseridas e formatadas em uma instrução.


A resposta de Andrew é boa.

E só para te ajudar um pouco mais, aqui está como você usa a formatação múltipla em uma string

"Hello %s, my name is %s" % ('john', 'mike') # Hello john, my name is mike".

Se você estiver usando ints em vez de string, use% d em vez de% s.

"My name is %s and i'm %d" % ('john', 12) #My name is john and i'm 12

Em resposta à sua segunda pergunta: o que esse código faz?

Esse é um código de verificação de erros bastante padrão para um script Python que aceita argumentos de linha de comando.

Então a primeira declaração if traduz em: se você não me passou um argumento, eu vou lhe dizer como você deve me passar um argumento no futuro, por exemplo, você verá isso na tela:

Usage: myscript.py database-name

A próxima instrução if verifica se o 'nome do banco de dados' que você passou para o script realmente existe no sistema de arquivos. Se não, você receberá uma mensagem como esta:

ERROR: Database database-name was not found!

Da documentation :

argv [0] é o nome do script (depende do sistema operacional se esse é um nome de caminho completo ou não). Se o comando foi executado usando a opção de linha de comando -c para o interpretador, argv [0] é configurado para a string '-c'. Se nenhum nome de script foi passado para o interpretador Python, argv [0] é a string vazia.


O método de format foi introduzido no Python 2.6. É mais capaz e não é muito mais difícil de usar:

>>> "Hello {}, my name is {}".format('john', 'mike')
'Hello john, my name is mike'.

>>> "{1}, {0}".format('world', 'Hello')
'Hello, world'

>>> "{greeting}, {}".format('world', greeting='Hello')
'Hello, world'

>>> '%s' % name
"{'s1': 'hello', 's2': 'sibal'}"
>>> '%s' %name['s1']
'hello'

%s indica um tipo de conversão de string ao usar os recursos de formatação de string do python. Mais especificamente, %s converte um valor especificado em uma string usando a função str() . Compare isso com o tipo de conversão %r que usa a função repr() para conversão de valor.

Dê uma olhada nos documentos para formatação de string .







python