กำลังแปลงจำนวนเต็มเป็นสตริง?


1361

ฉันต้องการแปลงจำนวนเต็มเป็นสตริงใน Python ฉันพิมพ์มันอย่างไร้ประโยชน์:

d = 15
d.str()

เมื่อฉันพยายามที่จะแปลงเป็นสตริงก็แสดงให้เห็นข้อผิดพลาดเช่นintไม่ได้แอตทริบิวต์ใด ๆ strที่เรียกว่า

คำตอบ:


2094
>>> str(10)
'10'
>>> int('10')
10

ลิงค์ไปยังเอกสารประกอบ:

การแปลงเป็นสตริงทำได้ด้วยstr()ฟังก์ชันbuiltin ซึ่งโดยทั่วไปเรียก__str__()เมธอดของพารามิเตอร์



62

ไม่มี typecast และไม่มีการข่มขู่ประเภทใน Python คุณต้องแปลงตัวแปรของคุณอย่างชัดเจน

ในการแปลงวัตถุเป็นสตริงให้ใช้str()ฟังก์ชัน มันทำงานกับวัตถุใด ๆ ที่มีวิธีการที่เรียกว่า__str__()กำหนดไว้ ในความเป็นจริง

str(a)

เทียบเท่ากับ

a.__str__()

เช่นเดียวกันถ้าคุณต้องการแปลงบางสิ่งเป็น int, float ฯลฯ


โซลูชันนี้ช่วยฉันฉันแปลงสตริงตัวอักษรและตัวเลขเป็นสตริงตัวเลขแทนที่ตัวอักษรด้วยค่า ascii ของพวกเขาอย่างไรก็ตามการใช้ฟังก์ชั่น str () โดยตรงไม่ทำงาน แต่ __str __ () ทำงาน ตัวอย่าง (python2.7); s = "14.2.2.10a2" รหัสที่ไม่ทำงาน: พิมพ์ "" .join ([str (ord (c))) ถ้า (c.isalpha ()) อื่น c สำหรับ c ใน s) รหัสการทำงาน: พิมพ์ "" .join ([ord (c) .__ str __ () ถ้า (c.isalpha ()) อื่น ๆ c สำหรับ c ใน s)) ผลลัพธ์ที่คาดหวัง: 14.2.2.10972
Jayant

18

ในการจัดการอินพุตที่ไม่ใช่จำนวนเต็ม:

number = raw_input()
try:
    value = int(number)
except ValueError:
    value = 0



7

สำหรับ Python 3.6 คุณสามารถใช้คุณสมบัติใหม่ของ f-strings เพื่อแปลงเป็นสตริงและมันเร็วกว่าเมื่อเทียบกับฟังก์ชั่น str () มันถูกใช้ดังนี้:

age = 45
strAge = f'{age}'

Python ให้ฟังก์ชั่น str () ด้วยเหตุผลดังกล่าว

digit = 10
print(type(digit)) # will show <class 'int'>
convertedDigit= str(digit)
print(type(convertedDigit)) # will show <class 'str'>

สำหรับคำตอบโดยละเอียดเพิ่มเติมคุณสามารถตรวจสอบบทความนี้: การแปลง Python Int เป็น String และ Python String เป็น Int


6

วิธีที่ดีที่สุดในความคิดของฉันคือ ``

i = 32   -->    `i` == '32'

3
โปรดทราบว่านี่เทียบเท่ากับrepr(i)ดังนั้นมันจะแปลกสำหรับความยาว (ลองi = `2 ** 32`; print i)

16
สิ่งนี้เลิกใช้แล้วใน python 2 และถูกลบใน python 3 ทั้งหมดดังนั้นฉันจะไม่แนะนำให้ใช้อีกต่อไป docs.python.org/3.0/whatsnew/3.0.html#removed-syntax
teeks99


5

สำหรับคนที่ต้องการแปลง int เป็นสตริงในหลักที่ระบุแนะนำวิธีการด้านล่าง

month = "{0:04d}".format(localtime[1])

สำหรับรายละเอียดเพิ่มเติมคุณสามารถดูกองมากเกินคำถามจำนวนการแสดงผลด้วยศูนย์ชั้นนำ


4

ด้วยการแนะนำ f-strings ใน Python 3.6 สิ่งนี้จะได้ผล:

f'{10}' == '10'

จริงๆแล้วมันเร็วกว่าการโทรstr()ด้วยค่าใช้จ่ายในการอ่าน

ความจริงมันเร็วกว่า%xการจัดรูปแบบสตริงและ.format()!

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