eu tenho o seguinte código
test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test
print(selectiveEscape)
Gostaria de obter a saída:
Print percent % in sentence and not have it break.
O que realmente acontece:
selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str
python
escaping
python-2.7
jondykeman
fonte
fonte
\%
? Esse foi o meu palpite, estou surpreso ao descobrir que é%%
- parece bastante contra-intuitivo.% i
significa "uma representação decimal de um número inteiro, acolchoado esquerda com espaços.\%
, seria realmente\\%
quando escrita em código comum.<escape><escape>
é o padrão típico que eu já vi e\
passa a ser o personagem de escape mais comum, para melhor ou para pior.\
se tivesse que imprimir\\%
? É necessário que você escape através da repetição de caracteres especiais, se os caracteres especiais também não forem especiais, dependendo das circunstâncias.Respostas:
fonte
print('%s%%' % 100)
imprime100%
. Masprint('%%')
imprime%%
. Parece que você não precisa escapar dos sinais de% se não fizer substituições.%
método é, na verdade, preterido (em Python 3) a favor destr.format()
: docs.python.org/2/library/stdtypes.html#str.format%
método não é depreciado no Python 3.6. Ele continuará sendo suportado, em vez de sua semelhança com c, c ++, etc.str.format()
e as strings f são preferidas, mas não aplicadas.%
sinal. Só%
vai fazerComo alternativa, a partir do Python 2.6, você pode usar a nova formatação de string (descrita no PEP 3101 ):
o que é especialmente útil quando as cordas ficam mais complicadas.
fonte
format
hoje em dia.tente usar
%%
para imprimir o sinal de%.fonte
Você não pode escapar seletivamente
%
, pois%
sempre tem um significado especial, dependendo do caractere a seguir.Na documentação do Python, na parte inferior da segunda tabela dessa seção, ele afirma:
Portanto, você deve usar:
(observe a alteração do déficit para a tupla como argumento para
%
)Sem saber o que foi dito acima, eu teria feito:
com o conhecimento que você obviamente já tinha.
fonte
Se o modelo de formatação foi lido de um arquivo e você não pode garantir que o conteúdo duplique o sinal de porcentagem, provavelmente será necessário detectar o caractere de porcentagem e decidir programaticamente se é o início de um espaço reservado ou não. O analisador também deve reconhecer sequências como
%d
(e outras letras que podem ser usadas), mas também%(xxx)s
etc.Problema semelhante pode ser observado com os novos formatos - o texto pode conter chaves.
fonte
Se você estiver usando o Python 3.6 ou mais recente, poderá usar a string f :
fonte
Eu tentei métodos diferentes para imprimir um título de subtrama, veja como eles funcionam. É diferente quando eu uso o látex.
Funciona com '%%' e 'string' + '%' em um caso típico.
Se você usa o Latex, ele funciona usando 'string' + '\%'
Então, em um caso típico:
Exemplos de título com%
Se usarmos látex:
Temos o seguinte: exemplo de título com% e látex
fonte