การต่อสตริงและจำนวนเต็มในไพ ธ อน


136

ในภาษาไพ ธ อนคุณมี

s = "string"
i = 0
print s+i

จะให้ข้อผิดพลาดดังนั้นคุณเขียน

print s+str(i) 

เพื่อไม่ให้เกิดข้อผิดพลาด

ฉันคิดว่านี่เป็นวิธีที่ค่อนข้างงุ่มง่ามในการจัดการ int และ string concatenation แม้แต่จาวาก็ไม่จำเป็นต้องทำการแคสตริกับ String อย่างชัดเจนเพื่อทำการเรียงต่อกันแบบนี้ มีวิธีที่ดีกว่าในการทำเรียงต่อกันเช่นนี้โดยไม่มีการคัดเลือกนักแสดงอย่างชัดเจนใน Python


8
เป็นเพราะ Python นั้นเป็นภาษาที่แข็งแกร่ง ( en.wikipedia.org/wiki/Strong_typing ) ภาษา (บางสิ่งที่ google ใช้เพื่อทำความเข้าใจเพิ่มเติม :))
mouad

3
มันจะนำไปสู่ความกำกวม สิ่งที่จะเป็นผลมาจากการ"1" + 1, 2หรือ"11"และทำไม?
บัดดี้

1
บัดดี้ฉันไม่แน่ใจว่าคุณคิดอะไรอยู่ แต่อย่าเพิ่งคิด ปัญหาของฉันคือการเชื่อมวัตถุสองประเภทที่แตกต่างกันและฉันพบวิธีแก้ปัญหา ฉันไม่รู้ว่าคุณตั้งโปรแกรมไว้ในไพ ธ อนมากน้อยเพียงใด แต่คุณเคยพยายามต่อสองสายเข้าด้วยกันเพื่อให้เกิดข้อผิดพลาดเมื่อหนึ่งในนั้นไม่มีประเภทใช่หรือไม่ คุณสามารถทำการตรวจสอบอย่างชัดเจนได้ แต่นั่นเป็นเพียงโค้ดเสริมอีกเล็กน้อย สิ่งนี้จำเป็นต้องใช้เมื่อคุณต้องการบันทึกข้อผิดพลาด
สโคปพิเศษ

2
เพียงแค่s+str(i)และคุณถูกต้อง!

คำตอบ:


174

การจัดรูปแบบสตริงที่ทันสมัย:

"{} and {}".format("string", 1)

5
เพียงเพื่อลูกหลานเนื่องจากสิ่งต่าง ๆ มีการเปลี่ยนแปลงในอดีตและมีแนวโน้มที่จะเปลี่ยนแปลงในอนาคต: นี่คือ "ทันสมัย" เป็นรุ่นใด
jvriesem

str.formatวิธีการที่ถูกนำมาใช้ใน Python 3.0 และ backported หลาม 2.6และต่อมา (ดูstackoverflow.com/a/792745/4648642 )
MechtEngineer

87

ไม่มีการจัดรูปแบบสตริง:

>> print 'Foo',0
Foo 0

2
สิ่งนี้จะทำงานได้ดีกับการพิมพ์ แต่ไม่สามารถกำหนดให้กับตัวแปรเป็นสตริงได้ มันให้ชุดวัตถุ
สโคปพิเศษ

2
นอกจากนี้ยังติดในช่องว่างพิเศษระหว่างสองรายการยกเว้นว่าคุณใช้print() ฟังก์ชั่น v3 และตั้งค่าพารามิเตอร์บางอย่าง
Levon

34

การจัดรูปแบบสตริงโดยใช้.format()วิธีการแบบใหม่(ด้วยค่าเริ่มต้น. format ()ให้):

 '{}{}'.format(s, i)

หรือเก่ากว่า แต่ "ยังคงเกาะอยู่", - %รูปแบบ:

 '%s%d' %(s, i)

ในทั้งสองตัวอย่างด้านบนไม่มีช่องว่างระหว่างสองรายการที่ต่อกัน หากต้องการพื้นที่ก็สามารถเพิ่มได้ในสตริงรูปแบบ

เหล่านี้มีจำนวนมากของการควบคุมและความยืดหยุ่นเกี่ยวกับวิธีการ concatenate รายการ, ช่องว่างระหว่างพวกเขาเป็นต้นสำหรับรายละเอียดเกี่ยวกับรายละเอียดรูปแบบเห็นนี้


14

Python เป็นภาษาที่น่าสนใจในขณะที่มักจะมีวิธีที่ชัดเจนในการทำงานให้สำเร็จ แต่ก็ยังคงมีความยืดหยุ่น

s = "string"
i = 0

print (s + repr(i))

ตัวอย่างโค้ดข้างต้นเขียนด้วยไวยากรณ์ Python3 แต่อนุญาตให้ใส่วงเล็บหลังการพิมพ์ (ตัวเลือก) จนกว่าจะมีการบังคับใช้รุ่น 3

หวังว่านี่จะช่วยได้

Caitlin


5

รูปแบบ () วิธีการสามารถใช้ในการเชื่อมสตริงและจำนวนเต็ม

print(s+"{}".format(i))


0

ใน python 3.6 และใหม่กว่าคุณสามารถจัดรูปแบบเช่นนี้:

new_string = f'{s} {i}'
print(new_string)

หรือเพียงแค่:

print(f'{s} {i}')
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.