Saya memiliki kode berikut
test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test
print(selectiveEscape)
Saya ingin mendapatkan output:
Print percent % in sentence and not have it break.
Apa yang sebenarnya terjadi:
selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str
python
escaping
python-2.7
jondykeman
sumber
sumber
\%
? Itu dugaan saya, saya terkejut mendapati itu%%
sebagai gantinya - tampaknya cukup berlawanan dengan intuisi.% i
berarti "representasi desimal dari bilangan bulat, berlapis kiri dengan spasi.\%
itu sebenarnya\\%
ketika ditulis dalam kode biasa.<escape><escape>
adalah pola khas yang pernah saya lihat, dan\
kebetulan menjadi karakter pelarian yang paling umum, baik atau buruk.\
jika Anda harus mencetak\\%
? Anda harus melarikan diri melalui pengulangan karakter khusus, jika karakter khusus juga tidak spesial tergantung keadaan.Jawaban:
sumber
print('%s%%' % 100)
cetakan100%
. Tapiprint('%%')
cetak%%
. Jadi sepertinya Anda tidak perlu keluar dari tanda% jika Anda tidak membuat pergantian.%
metode ini sebenarnya sudah usang (dalam Python 3) yang mendukungstr.format()
: docs.python.org/2/library/stdtypes.html#str.format%
metode ini tidak disusutkan dalam Python 3.6. Ini akan terus didukung sebagai pengganti kemiripannya dengan c, c ++, dll.str.format()
Dan f-string lebih disukai tetapi tidak ditegakkan.%
tanda. Just%
will doAtau, pada Python 2.6, Anda bisa menggunakan pemformatan string baru (dijelaskan dalam PEP 3101 ):
yang sangat berguna karena string Anda menjadi lebih rumit.
sumber
format
hari ini.coba gunakan
%%
untuk mencetak tanda%.sumber
Anda tidak dapat melarikan diri secara selektif
%
, karena%
selalu memiliki arti khusus tergantung pada karakter berikut.Dalam dokumentasi Python, di bawah tabel kedua di bagian itu, ia menyatakan:
Karena itu Anda harus menggunakan:
(harap perhatikan perubahan ekspisit menjadi tuple sebagai argumen untuk
%
)Tanpa mengetahui tentang hal di atas, saya akan melakukan:
dengan pengetahuan yang jelas sudah Anda miliki.
sumber
Jika Templat pemformatan dibaca dari file, dan Anda tidak dapat memastikan konten menggandakan tanda persen, maka Anda mungkin harus mendeteksi karakter persen dan memutuskan secara terprogram apakah itu awal placeholder atau tidak. Kemudian parser juga harus mengenali urutan seperti
%d
(dan huruf lain yang dapat digunakan), tetapi juga%(xxx)s
dll.Masalah serupa dapat diamati dengan format baru - teks dapat berisi kurung kurawal.
sumber
Jika Anda menggunakan Python 3.6 atau yang lebih baru, Anda dapat menggunakan f-string :
sumber
Saya telah mencoba berbagai metode untuk mencetak judul subplot, lihat cara kerjanya. Ini berbeda ketika saya menggunakan Lateks.
Ini bekerja dengan '%%' dan 'string' + '%' dalam kasus khusus.
Jika Anda menggunakan Lateks berfungsi dengan menggunakan 'string' + '\%'
Jadi dalam kasus yang khas:
Contoh judul dengan%
Jika kami menggunakan lateks:
Kami mendapatkan ini: Contoh judul dengan% dan lateks
sumber