2017-02-13 4 views
1

как удалить все вхождения в строке до первого места, так что:Python :: удалите все вхождения до первого места

strings = ["1234 zoocore", "4356 00's punk"] 

становится: ["zoocore", "00's punk"]?

Я попытался регулярное выражение:

for s in strings: 
    new_s = re.sub(r'\d+','', s) 

но стирает 00' как хорошо, что я не хочу.

+0

from 'help (re)': _ "' \ A' Совпадает только в начале строки. "_ Может быть полезно ... поэтому я считаю' '\ A. * \ S" ' будет соответствовать началу строки, любым символам до первого пробела. –

ответ

8

Вы можете использовать str.split с maxsplit параметра:

>>> strings = ["1234 zoocore", "4356 00's punk"] 
>>> [s.split(None, 1)[1] for s in strings] 
['zoocore', "00's punk"] 

Если у вас есть строки, которые не содержат пространства вы можете использовать -1 как индекс:

>>> strings = ["1234 zoocore", "4356 00's punk", "rock"] 
>>> [s.split(None, 1)[-1] for s in strings] 
['zoocore', "00's punk", 'rock'] 
1

Ваша ошибка состоит в том, что вы Ждут» t привязать совпадение в начале строки и что вы не включили пробел. Вот фиксированная версия:

>>> [re.sub(r'^\d* ', '', s) for s in strings] 
['zoocore', "00's punk"] 

И еще один способ найти пространство (если есть), а затем нарезать строку.

>>> strings = ["1234 zoocore", "4356 00's punk", "rock"] 
>>> [s[s.find(' ') + 1:] for s in strings] 
['zoocore', "00's punk", 'rock'] 
Смежные вопросы