J'ai le code suivant
test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test
print(selectiveEscape)
Je voudrais obtenir la sortie:
Print percent % in sentence and not have it break.
Que se passe-t-il réellement:
selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str
python
escaping
python-2.7
jondykeman
la source
la source
\%
? C'était ma supposition, je suis surpris de constater que c'est%%
plutôt - semble assez contre-intuitif.% i
signifie "une représentation décimale d'un entier, complétée à gauche par des espaces.\%
ce serait en réalité\\%
lorsqu'elle était écrite en code ordinaire.<escape><escape>
est le schéma typique que j'ai vu, et\
se trouve être le personnage d'évasion le plus courant, pour le meilleur ou pour le pire.\
si vous deviez imprimer\\%
? Vous devrez obligatoirement échapper par la répétition de caractères spéciaux, si les caractères spéciaux ne sont pas non plus spéciaux selon les circonstances.Réponses:
la source
print('%s%%' % 100)
imprime100%
. Maisprint('%%')
imprime%%
. Il semble donc que vous n'ayez pas à échapper aux signes% si vous n'effectuez pas de substitutions.%
méthode est en fait obsolète (en Python 3) en faveur destr.format()
: docs.python.org/2/library/stdtypes.html#str.format%
méthode n'est pas dépréciée en Python 3.6. Il continuera à être pris en charge au lieu de sa similitude avec c, c ++, etc.str.format()
et les chaînes f sont préférées mais non appliquées.%
signe. Tout%
va faireAlternativement, à partir de Python 2.6, vous pouvez utiliser un nouveau formatage de chaîne (décrit dans PEP 3101 ):
ce qui est particulièrement pratique car vos cordes se compliquent.
la source
format
nos jours.essayez d'utiliser
%%
pour imprimer le signe%.la source
Vous ne pouvez pas vous échapper de manière sélective
%
, comme cela a%
toujours une signification particulière en fonction du personnage suivant.Dans la documentation de Python, au bas du deuxième tableau de cette section, il indique:
Par conséquent, vous devez utiliser:
(veuillez noter le changement explicite de tuple comme argument
%
)Sans savoir ce qui précède, j'aurais fait:
avec les connaissances que vous aviez évidemment déjà.
la source
Si le modèle de mise en forme a été lu à partir d'un fichier et que vous ne pouvez pas vous assurer que le contenu double le signe de pourcentage, vous devez probablement détecter le caractère de pourcentage et décider par programme s'il s'agit du début d'un espace réservé ou non. Ensuite, l'analyseur doit également reconnaître des séquences comme
%d
(et d'autres lettres qui peuvent être utilisées), mais aussi%(xxx)s
etc.Un problème similaire peut être observé avec les nouveaux formats - le texte peut contenir des accolades.
la source
Si vous utilisez Python 3.6 ou une version plus récente, vous pouvez utiliser la chaîne f :
la source
J'ai essayé différentes méthodes pour imprimer un titre de sous-intrigue, regardez comment cela fonctionne. C'est différent quand j'utilise du latex.
Cela fonctionne avec '%%' et 'string' + '%' dans un cas typique.
Si vous utilisez Latex, cela a fonctionné en utilisant 'string' + '\%'
Donc, dans un cas typique:
Exemples de titres avec%
Si nous utilisons du latex:
Nous obtenons ceci: Exemple de titre avec% et latex
la source