Mam następujący kod
test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test
print(selectiveEscape)
Chciałbym uzyskać wynik:
Print percent % in sentence and not have it break.
Co się właściwie dzieje:
selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str
python
escaping
python-2.7
jondykeman
źródło
źródło
\%
? Tak sądziłem, jestem zaskoczony, że to%%
zamiast tego - wydaje się dość sprzeczne z intuicją.% i
oznacza „dziesiętną reprezentację liczby całkowitej, wypełnioną lewą spacją.\%
byłoby, to tak naprawdę byłoby,\\%
gdyby napisano zwykłym kodem.<escape><escape>
to typowy wzorzec, który widziałem, i\
zdarza się, że jest najczęstszą postacią ucieczki, na dobre lub złe.\
, gdybyś musiał wydrukować\\%
? Jesteś zobowiązany do ucieczki poprzez powtarzanie znaków specjalnych, jeśli znaki specjalne również nie są specjalne w zależności od okoliczności.Odpowiedzi:
źródło
print('%s%%' % 100)
drukuje100%
. Aleprint('%%')
drukuje%%
. Wygląda więc na to, że nie musisz uciekać od znaków%, jeśli nie dokonasz zamiany.%
metoda jest faktycznie przestarzała (w Pythonie 3) na korzyśćstr.format()
: docs.python.org/2/library/stdtypes.html#str.format%
metoda nie jest amortyzowana w Pythonie 3.6. Będzie nadal obsługiwany zamiast podobieństwa do c, c ++ itp.,str.format()
A ciągi f są preferowane, ale nie są egzekwowane.%
znaku. Po prostu%
zrobięAlternatywnie, począwszy od Pythona 2.6, możesz użyć nowego formatowania łańcucha (opisanego w PEP 3101 ):
co jest szczególnie przydatne, gdy twoje łańcuchy stają się bardziej skomplikowane.
źródło
format
.spróbuj użyć
%%
do wydrukowania znaku%.źródło
Nie możesz selektywnie uciec
%
, jak%
zawsze ma specjalne znaczenie w zależności od następującej postaci.W dokumentacji Pythona, na dole drugiej tabeli w tej sekcji, stwierdza:
Dlatego powinieneś użyć:
(zwróć uwagę na zmianę wydatków na krotkę jako argument na
%
)Nie wiedząc o tym, zrobiłbym:
z wiedzą, którą oczywiście już posiadałeś.
źródło
Jeśli szablon formatowania został odczytany z pliku i nie możesz upewnić się, że treść podwaja znak procentu, prawdopodobnie musisz wykryć znak procentu i programowo zdecydować, czy jest to początek symbolu zastępczego, czy nie. Następnie analizator składni powinien rozpoznać sekwencje takie jak
%d
(i inne litery, których można użyć), ale także%(xxx)s
itp.Podobny problem można zaobserwować w nowych formatach - tekst może zawierać nawiasy klamrowe.
źródło
Jeśli używasz języka Python 3.6 lub nowszego, możesz użyć ciągu f :
źródło
Próbowałem różnych metod, aby wydrukować tytuł podploty, zobacz jak działają. Jest inaczej, gdy używam lateksu.
Działa z „%%” i „string” + „%” w typowym przypadku.
Jeśli używasz lateksu, działało to przy użyciu „string” + „\%”
W typowym przypadku:
Przykłady tytułów z%
Jeśli używamy lateksu:
Otrzymujemy to: przykładowy tytuł z% i lateksem
źródło