ฉันไม่เข้าใจสิ่งที่%s
และ%d
ทำและวิธีการที่พวกเขาทำงาน
ฉันไม่เข้าใจสิ่งที่%s
และ%d
ทำและวิธีการที่พวกเขาทำงาน
คำตอบ:
ใช้สำหรับการจัดรูปแบบสตริง %s
ทำหน้าที่เป็นตัวยึดสำหรับสตริงในขณะที่%d
ทำหน้าที่เป็นตัวยึดสำหรับตัวเลข ค่าที่เกี่ยวข้องจะถูกส่งผ่านทางทูเพิลโดยใช้ตัว%
ดำเนินการ
name = 'marcog'
number = 42
print '%s %d' % (name, number)
marcog 42
จะพิมพ์ โปรดทราบว่าชื่อเป็นสตริง (% s) และตัวเลขเป็นจำนวนเต็ม (% d สำหรับทศนิยม)
ดูรายละเอียดhttps://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting
ใน Python 3 ตัวอย่างจะเป็น:
print('%s %d' % (name, number))
จากpython 3 doc
%d
เป็นจำนวนเต็มทศนิยม
%s
เป็นสตริงหรืออ็อบเจกต์ทั่วไปและในกรณีของอ็อบเจ็กต์จะถูกแปลงเป็นสตริง
พิจารณารหัสต่อไปนี้
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
การออกจะเป็น
giacomo 4.3 4 4.300000 4.3
อย่างที่คุณเห็น%d
จะตัดทอนเป็นจำนวนเต็ม%s
จะรักษาการจัดรูปแบบ%f
จะพิมพ์เป็นลอยและ%g
ใช้สำหรับหมายเลขทั่วไป
เห็นได้ชัด
print('%d' % (name))
จะสร้างข้อยกเว้น คุณไม่สามารถแปลงสตริงเป็นตัวเลขได้
%s
ใช้ตัวเลขแทน
%s
ใช้เป็นตัวยึดสำหรับค่าสตริงที่คุณต้องการแทรกลงในสตริงที่จัดรูปแบบ
%d
ใช้เป็นตัวยึดสำหรับค่าตัวเลขหรือทศนิยม
ตัวอย่างเช่น (สำหรับ python 3)
print ('%s is %d years old' % ('Joe', 42))
จะส่งออก
Joe is 42 years old
นี่คือตัวยึดตำแหน่ง:
ตัวอย่างเช่น: 'Hi %s I have %d donuts' %('Alice', 42)
โค้ดบรรทัดนี้จะแทนที่% s ด้วย Alice (str) และ% d ด้วย 42
เอาท์พุต: 'Hi Alice I have 42 donuts'
สิ่งนี้สามารถทำได้โดยใช้ "+" เกือบตลอดเวลา เพื่อให้เข้าใจคำถามของคุณอย่างลึกซึ้งยิ่งขึ้นคุณอาจต้องการตรวจสอบ {} / .format () ด้วย นี่คือตัวอย่างหนึ่ง: การจัดรูปแบบสตริง Python:% เทียบกับ. รูปแบบ
ดูวิดีโอสอน google python @ 40 'ได้ที่นี่มีคำอธิบาย https://www.youtube.com/watch?v=tKTZoB2Vjuk
เหล่านี้ล้วนเป็นคำตอบให้ข้อมูล แต่ไม่มีผู้ใดได้รับค่อนข้างที่หลักของสิ่งที่แตกต่างระหว่างและ%s
%d
%s
บอกจัดรูปแบบการเรียกstr()
ฟังก์ชั่นในการโต้แย้งและเนื่องจากเรากำลังบีบบังคับสตริงโดยความหมายเป็นหลักเพียงแค่การแสดง%s
str(arg)
%d
ในทางกลับกันกำลังเรียกร้องให้int()
มีการโต้แย้งก่อนที่จะเรียกstr()
เช่นstr(int(arg))
นี้จะทำให้เกิดการint
บีบบังคับและการstr
บีบบังคับ
ตัวอย่างเช่นฉันสามารถแปลงค่าฐานสิบหกเป็นทศนิยม
>>> '%d' % 0x15
'21'
หรือตัดลอย
>>> '%d' % 34.5
'34'
แต่การดำเนินการจะเพิ่มข้อยกเว้นหากอาร์กิวเมนต์ไม่ใช่ตัวเลข
>>> '%d' % 'thirteen'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
ดังนั้นหากเจตนาเป็นเพียงการเรียกstr(arg)
ก็%s
เพียงพอแล้ว แต่ถ้าคุณต้องการการจัดรูปแบบเพิ่มเติม (เช่นการจัดรูปแบบทศนิยมทศนิยม) หรือการบังคับอื่น ๆ จำเป็นต้องใช้สัญลักษณ์รูปแบบอื่น
ด้วยสัญกรณ์เมื่อคุณออกจากการจัดรูปแบบที่เริ่มต้นคือf-string
str
>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Unknown format code 'd' for object of type 'str'
เช่นเดียวกับstring.format
; str
เริ่มต้นคือ
>>> a = 1
>>> '{}'.format(a)
'1'
>>> '{!s}'.format(a)
'1'
>>> '{:d}'.format(a)
'1'
การจัดรูปแบบสตริง%d
และ%s
"คำสั่ง" ใช้ในการจัดรูปแบบสตริง %d
สำหรับตัวเลขและ%s
สำหรับสตริง
ตัวอย่างเช่น:
print("%s" % "hi")
และ
print("%d" % 34.6)
ในการส่งผ่านหลายอาร์กิวเมนต์:
print("%s %s %s%d" % ("hi", "there", "user", 123456))
จะกลับมา hi there user123456
%d
และ%s
เป็นตัวยึดตำแหน่งซึ่งทำงานเป็นตัวแปรที่เปลี่ยนได้ ตัวอย่างเช่นหากคุณสร้างตัวแปร 2 ตัว
variable_one = "Stackoverflow"
variable_two = 45
คุณสามารถกำหนดตัวแปรเหล่านั้นให้กับประโยคในสตริงโดยใช้ทูเพิลของตัวแปร
variable_3 = "I was searching for an answer in %s and found more than %d answers to my question"
โปรดทราบว่า%s
ใช้ได้กับ String และ%d
ทำงานกับตัวแปรที่เป็นตัวเลขหรือทศนิยม
หากคุณพิมพ์ออกvariable_3
มาจะมีลักษณะเช่นนี้
print(variable_3 % (variable_one, variable_two))
ฉันกำลังค้นหาคำตอบใน StackOverflow และพบคำตอบมากกว่า 45 คำสำหรับคำถามของฉัน
เป็นตัวระบุรูปแบบ ใช้เมื่อคุณต้องการรวมค่าของนิพจน์ Python ลงในสตริงโดยบังคับใช้รูปแบบเฉพาะ
ดูDive into Pythonสำหรับการแนะนำโดยละเอียด
ตามมาตรฐานล่าสุดนี่คือวิธีที่ควรทำ
print("My name is {!s} and my number is{:d}".format("Agnel Vishal",100))
ตรวจสอบเอกสาร python3.6และโปรแกรมตัวอย่าง
ในกรณีที่คุณต้องการหลีกเลี่ยง% s หรือ% d แล้ว ..
name = 'marcog'
number = 42
print ('my name is',name,'and my age is:', number)
เอาท์พุต:
my name is marcog and my name is 42
%s
%d
print
เป็นฟังก์ชันใน Python 3 ไม่ใช่คำสั่ง
% s ใช้เพื่อเก็บช่องว่างสำหรับสตริง% d ใช้เพื่อเก็บช่องว่างสำหรับตัวเลข
name = "Moses";
age = 23
print("My name is %s am CEO at MoTech Computers " %name)
print("Current am %d years old" %age)
print("So Am %s and am %d years old" %(name,age))
วิดีโอนี้เจาะลึกเกี่ยวกับเคล็ดลับดังกล่าวhttps://www.youtube.com/watch?v=4zN5YsuiqMA
พูดถึงสิ่งที่ ...
python3.6 มาพร้อมกับf-strings
ซึ่งทำให้การจัดรูปแบบง่ายขึ้นมาก!
ตอนนี้ถ้าเวอร์ชัน python ของคุณมากกว่า 3.6 คุณสามารถจัดรูปแบบสตริงของคุณด้วยวิธีการที่มีอยู่เหล่านี้:
name = "python"
print ("i code with %s" %name) # with help of older method
print ("i code with {0}".format(name)) # with help of format
print (f"i code with {name}") # with help of f-strings
นี่คือตัวอย่างพื้นฐานเพื่อสาธิตการจัดรูปแบบสตริง Python และวิธีใหม่ในการดำเนินการ
my_word = 'epic'
my_number = 1
print('The %s number is %d.' % (my_word, my_number)) # traditional substitution with % operator
// เลขกาพย์คือ 1
print(f'The {my_word} number is {my_number}.') # newer format string style
// เลขกาพย์คือ 1
ทั้งสองพิมพ์เหมือนกัน
%s
ใช้กับการกำหนดค่าเครื่องมือค้นหาอย่างไร Chrome ใช้%s
แทนที่คำหลักที่ป้อนในแถบที่อยู่ Python ใช้%s
ในลักษณะเดียวกัน ในprint('description: %s' % descrip)
ตัว%s
ดำเนินการจะถูกแทนที่ด้วยสตริงข้อความที่เก็บไว้ในdescrip
ตัวแปร วงเล็บปีกกาป้องกันข้อความแสดงข้อผิดพลาดใน Python 3