Python memiliki setidaknya enam cara memformat string:
In [1]: world = "Earth"
# method 1a
In [2]: "Hello, %s" % world
Out[2]: 'Hello, Earth'
# method 1b
In [3]: "Hello, %(planet)s" % {"planet": world}
Out[3]: 'Hello, Earth'
# method 2a
In [4]: "Hello, {0}".format(world)
Out[4]: 'Hello, Earth'
# method 2b
In [5]: "Hello, {planet}".format(planet=world)
Out[5]: 'Hello, Earth'
# method 2c
In [6]: f"Hello, {world}"
Out[6]: 'Hello, Earth'
In [7]: from string import Template
# method 3
In [8]: Template("Hello, $planet").substitute(planet=world)
Out[8]: 'Hello, Earth'
Sejarah singkat dari berbagai metode:
printf
pemformatan gaya telah ada sejak Pythons masih bayi- The
Template
kelas diperkenalkan dengan Python 2.4 - The
format
Metode diperkenalkan dengan Python 2.6 f
-string diperkenalkan dengan Python 3.6
Pertanyaan saya adalah:
- Apakah
printf
pemformatan gaya tidak berlaku lagi atau akan dihentikan? - Di
Template class
, apakahsubstitute
metode ini tidak digunakan lagi atau akan dihentikan? (Saya tidak berbicara tentangsafe_substitute
, yang menurut saya menawarkan kemampuan unik)
Pertanyaan serupa dan mengapa menurut saya itu bukan duplikat:
Pemformatan string Python:% vs. .format - hanya memperlakukan metode 1 dan 2, dan menanyakan mana yang lebih baik; pertanyaan saya secara eksplisit tentang deprecation in the Zen of Python
Opsi pemformatan string: pro dan kontra - hanya memperlakukan metode 1a dan 1b dalam pertanyaan, 1 dan 2 dalam jawaban, dan juga tidak ada tentang penghentian
pemformatan string lanjutan vs string template - sebagian besar tentang metode 1 dan 3, dan tidak membahas penghentian
Ekspresi pemformatan string (Python) - jawaban menyebutkan bahwa pendekatan '%' asli direncanakan untuk dihentikan . Tapi apa perbedaan antara direncanakan untuk dihentikan , menunggu penolakan, dan penghentian yang sebenarnya ? Dan
printf
metode -style tidak menghasilkan aPendingDeprecationWarning
, jadi apakah ini benar-benar akan ditinggalkan? Posting ini juga cukup lama, jadi informasinya mungkin sudah ketinggalan zaman.
Formatter
kelasnya?