Python มีอย่างน้อยหกวิธีในการจัดรูปแบบสตริง:
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'
ประวัติโดยย่อของวิธีการต่างๆ:
printf
การจัดรูปแบบสไตล์มีมาตั้งแต่วัยเด็ก PythonsTemplate
ระดับได้รับการแนะนำในหลาม 2.4format
วิธีการได้รับการแนะนำในหลาม 2.6f
-strings ถูกนำมาใช้ใน Python 3.6
คำถามของฉันคือ:
- การ
printf
จัดรูปแบบสไตล์เลิกใช้งานหรือจะเลิกใช้งาน - ในการ
Template class
เป็นsubstitute
วิธีการเลิกใช้หรือกำลังจะถูกเลิก? (ฉันไม่ได้พูดถึงsafe_substitute
ซึ่งตามที่ฉันเข้าใจมันมีความสามารถพิเศษ)
คำถามที่คล้ายกันและทำไมฉันคิดว่ามันไม่ซ้ำกัน:
การจัดรูปแบบสตริง Python:% เทียบกับ. รูปแบบ - ใช้เฉพาะวิธีที่ 1 และ 2 และถามว่าอันไหนดีกว่า คำถามของฉันชัดเจนเกี่ยวกับการเลิกใช้งานในแง่ของ Zen of Python
ตัวเลือกการจัดรูปแบบสตริง: ข้อดีข้อเสีย - ใช้เฉพาะเมธอด 1a และ 1b ในคำถาม 1 และ 2 ในคำตอบและไม่มีอะไรเกี่ยวกับการเลิกใช้งาน
การจัดรูปแบบสตริงขั้นสูงเทียบกับสตริงเทมเพลต - ส่วนใหญ่เกี่ยวกับวิธีที่ 1 และ 3 และไม่ได้ระบุถึงการเลิกใช้งาน
สตริงการจัดรูปแบบการแสดงออก (งูใหญ่) - คำตอบกล่าวว่าเดิม '%' วิธีการที่มีการวางแผนที่จะเลิก แต่สิ่งที่แตกต่างระหว่างการวางแผนที่จะเลิก , รอดำเนินการคัดค้านและเกิดขึ้นจริงเลิก ? และ
printf
เมธอด -style ไม่เพิ่มขึ้นแม้แต่ aPendingDeprecationWarning
แล้วนี่จะเลิกใช้งานจริงเหรอ? โพสต์นี้ค่อนข้างเก่าดังนั้นข้อมูลอาจล้าสมัย
Formatter
ชั้นเรียนหรือไม่?