ลบอักขระสุดท้ายออกจากสตริง


509

สมมติว่าสตริงของฉันมีความยาว 10 ตัวอักษร

ฉันจะลบตัวอักขระสุดท้ายได้อย่างไร

หากสตริงของฉันคือ"abcdefghij"(ฉันไม่ต้องการแทนที่'j'ตัวละครเนื่องจากสตริงของฉันอาจมีหลาย'j'ตัวอักษร) ฉันต้องการตัวอักษรตัวสุดท้ายหายไป ไม่ว่าจะเกิดอะไรขึ้นหรือกี่ครั้งก็ตามฉันต้องลบอักขระตัวสุดท้ายออกจากสายอักขระ


คำตอบ:


833

ง่าย:

st =  "abcdefghij"
st = st[:-1]

นอกจากนี้ยังมีวิธีอื่นที่แสดงวิธีการทำขั้นตอน:

list1 = "abcdefghij"
list2 = list(list1)
print(list2)
list3 = list2[:-1]
print(list3)

นี่เป็นวิธีที่อินพุตของผู้ใช้:

list1 = input ("Enter :")
list2 = list(list1)
print(list2)
list3 = list2[:-1]
print(list3)

วิธีทำให้คำสุดท้ายหายไปในรายการ:

list1 = input("Enter :")
list2 = list1.split()
print(list2)
list3 = list2[:-1]
print(list3)

3
ใช่st[-1]เป็นเพียงตัวละครสุดท้ายของst
Cyrille

5
ที่จริงชิ้นนั้นจะยังคงทำงานแม้ว่าstจะว่างเปล่า มันจะส่งคืนสตริงว่างเปล่า แต่คุณจะไม่ได้รับข้อผิดพลาด
ใจดี

1
ถ้าคุณมีรายการคำและคุณต้องการลบอักขระตัวสุดท้ายของทุกคำ [สีน้ำเงิน, แดง, เขียว] => [blu, re, gree]?
Jellyse

5
[i[:-1] for i in ['blue','red','green']]
Cyrille

3
ดูตัวอย่างมันมีค่าที่จะกล่าวถึงรายการที่ไม่แน่นอนและ list.pop()วิธีการเป็นวิธีที่จะไปเมื่อจัดการกับรายการที่มันเอารายการสุดท้ายในสถานที่O(1)ในขณะที่การ[:-1]แบ่งการสร้างสำเนาของรายการโดยไม่ต้ององค์ประกอบสุดท้ายในO(n-1)เวลา บวกO(n-1)พื้นที่ สตริงไม่เปลี่ยนรูป - ไม่มีอะไรให้เพิ่ม
Dmitry

19

สิ่งที่คุณพยายามทำคือส่วนขยายของการแบ่งสตริงใน Python:

สมมติว่าสตริงทั้งหมดมีความยาว 10 อักขระตัวสุดท้ายที่จะลบออก:

>>> st[:9]
'abcdefghi'

หากต้องการลบNอักขระล่าสุด:

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