2015-12-10 3 views
1

У меня есть несколько строк, как это:Python: Удаление номера в начале строки

string1 = "123.123.This is a string some other numbers" 
string2 = "1. This is a string some numbers" 
string3 = "12-3-12.This is a string 123" 
string4 = "123-12This is a string 1234" 

Мне нужно удалить эти цифры с начала строки. Я попробовал метод strip[start: end], но из-за неправильного формата строки, которую я не могу использовать? какие-либо предложения?

+1

Если * пунктуация * быть удален тоже? –

+0

И что должно произойти с пробелом, после удаления цифр и знаков препинания? Возможно, вы могли бы добавить какой-то ожидаемый * вывод * к вашему вопросу? –

ответ

12

Вы можете удалить все цифры, точки, тире и пробелы с самого начала, используя str.lstrip():

string1.lstrip('.- ') 

Аргумент str.strip() трактуется как установить, например, любой символ в начале строки, являющейся членом этого набора, удаляется, пока строка больше не начнет с таких символов.

Демо:

>>> samples = """\ 
... 123.123.This is a string some other numbers 
... 1. This is a string some numbers 
... 12-3-12.This is a string 123 
... 123-12This is a string 1234 
... """.splitlines() 
>>> for sample in samples: 
...  print 'From: {!r}\nTo: {!r}\n'.format(
...   sample, sample.lstrip('.- ')) 
... 
From: '123.123.This is a string some other numbers' 
To: 'This is a string some other numbers' 

From: '1. This is a string some numbers' 
To: 'This is a string some numbers' 

From: '12-3-12.This is a string 123' 
To: 'This is a string 123' 

From: '123-12This is a string 1234' 
To: 'This is a string 1234' 
+0

Я не упоминал, что также есть числа внутри строк, которые я не хочу удалять, это удалит все? –

+0

@EstinaEsitna: это удаляет тезисы * только с самого начала *. Не из другого места. –

+0

Можете ли вы сказать мне, почему регулярное выражение не заменяется в 'lstrip()'. Я пытаюсь 'string1.lstrip (r '(\ d + (. | - | \ s)?) +')' –

Смежные вопросы