ลบอักขระตัวแรกของสตริง


167

ฉันต้องการลบอักขระตัวแรกของสตริง

ตัวอย่างเช่นสตริงของฉันเริ่มต้นด้วย:และฉันต้องการที่จะลบเท่านั้น มีหลายเหตุการณ์:ในสตริงที่ไม่ควรลบออก

ฉันกำลังเขียนรหัสใน Python

คำตอบ:


299

หลาม 2.x

s = ":dfa:sif:e"
print s[1:]

หลาม 3.x

s = ":dfa:sif:e"
print(s[1:])

ทั้งพิมพ์

dfa:sif:e

13
หากนี่เป็นคำตอบที่ยอมรับแล้วคำถามก็ควรจะเป็น "ฉันจะลบตัวอักษรตัวแรกของสตริงได้อย่างไร"
Spaceghost

1
@Spaceghost: OP ระบุว่า "โดยเฉพาะฉันต้องการลบอักขระแรก"
Sven Marnach

3
คุณพูดถูกฉันแค่ตอบสนองต่อความแตกต่างระหว่างชื่อเรื่องและเนื้อหาของคำถาม .. ในการเข้าใจถึงปัญหาหลังเหตุการณ์ควรใช้เวลาในการรับกาแฟ :-)
Spaceghost

35

ปัญหาของคุณดูเหมือนไม่ชัดเจน คุณบอกว่าคุณต้องการที่จะลบ "ตัวละครจากตำแหน่งที่แน่นอน" จากนั้นกล่าวต่อไปว่าคุณต้องการที่จะลบตัวละครที่เฉพาะเจาะจง

หากคุณต้องการลบอักขระแรกที่คุณต้องการ:

s = ":dfa:sif:e"
fixed = s[1:]

หากคุณต้องการลบตัวละครในตำแหน่งที่ต้องการคุณจะต้อง:

s = ":dfa:sif:e"
fixed = s[0:pos]+s[pos+1:]

หากคุณต้องการลบอักขระเฉพาะให้พูดว่า ':' ครั้งแรกที่พบอักขระในสตริงคุณจะต้อง:

s = ":dfa:sif:e"
fixed = ''.join(s.split(':', 1))

6
ตัวอย่างสุดท้ายสามารถทำได้ง่ายขึ้นโดยใช้s.replace(":", "", 1)-
Sven Marnach

25

ขึ้นอยู่กับโครงสร้างของสตริงคุณสามารถใช้lstrip:

str = str.lstrip(':')

แต่ตอนนี้จะเอาทวิภาคทั้งหมดที่จุดเริ่มต้นคือถ้าคุณมีผลที่จะเป็น::foo fooแต่ฟังก์ชั่นนี้มีประโยชน์หากคุณมีสตริงที่ไม่ได้ขึ้นต้นด้วยโคลอนและคุณไม่ต้องการลบอักขระแรก


2

ลบอักขระ:

def del_char(string, indexes):

    'deletes all the indexes from the string and returns the new one'

    return ''.join((char for idx, char in enumerate(string) if idx not in indexes))

มันจะลบตัวอักษรทั้งหมดที่อยู่ในดัชนี คุณสามารถใช้มันในกรณีของคุณด้วยdel_char(your_string, [0])

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