Usuń pierwszy znak łańcucha

165

Chciałbym usunąć pierwszy znak ciągu.

Na przykład mój ciąg zaczyna się od a :i chcę usunąć tylko to. W :ciągu znaków występuje kilka wystąpień , których nie należy usuwać.

Piszę kod w języku Python.

Hossein
źródło

Odpowiedzi:

297

python 2.x

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

python 3.x

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

oba wydruki

dfa:sif:e
Sven Marnach
źródło
13
Jeśli jest to akceptowana odpowiedź, pytanie powinno brzmieć „jak usunąć pierwszy znak z ciągu”.
Spaceghost
1
@Spaceghost: OP stwierdza: „W szczególności chcę usunąć pierwszy znak”.
Sven Marnach
3
Masz rację, właśnie odpowiadałem na różnicę między tytułem a treścią pytania. Z perspektywy czasu powinienem był poświęcić czas na kawę. :-)
Spaceghost
35

Twój problem wydaje się niejasny. Mówisz, że chcesz usunąć „znak z określonej pozycji”, a następnie mówisz, że chcesz usunąć określony znak.

Jeśli chcesz usunąć tylko pierwszą postać, możesz to zrobić:

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

Jeśli chcesz usunąć znak na określonej pozycji, wykonaj następujące czynności:

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

Jeśli chcesz usunąć określony znak, powiedz „:”, gdy pierwszy raz napotkasz go w ciągu, wykonaj:

s = ":dfa:sif:e"
fixed = ''.join(s.split(':', 1))
Spaceghost
źródło
6
Ostatni przykład można by łatwiej zrobić używając s.replace(":", "", 1)-
Sven Marnach
25

W zależności od struktury struny możesz użyć lstrip:

str = str.lstrip(':')

Ale to usunie wszystkie dwukropki na początku, tj. Jeśli tak ::foo, wynik byłby foo. Ale ta funkcja jest pomocna, jeśli masz również ciągi znaków, które nie zaczynają się od dwukropka i nie chcesz wtedy usuwać pierwszego znaku.

Felix Kling
źródło
2

usuwanie znaku:

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))

usuwa wszystkie znaki, które są w indeksach; możesz go użyć w swoim przypadku zdel_char(your_string, [0])

Mrówka
źródło