2016-11-22 3 views
3

Приветствую всех! Я пытаюсь отладить код someones, и я нашел проблему. Программа циклически проходит через массив строк и определенных контуров. Проблема в том, что некоторые из этих строк заканчиваются _, поэтому подсчет идет не так. Я хотел бы использовать регулярное выражение, но я недостаточно опыт. Может кто-нибудь мне помочь?Python: Подчеркивание подчеркивания от конца строки

Хотелось бы пройти через массив и на строку проверки, если она заканчивается _() и обрезать все эти _, чтобы поместить их снова в массив!

Update

Благодарность за rstrip предложение! Я попытался написать код, который работает с моими данными, но не повезло еще ...

data_trimmed = [] 
     for x in data: 
      x.rstrip('_') 
      data_trimmed.append(x) 

     print(data_trimmed) 

Но это все равно возвращается: ['Anna__67_______', 'Dyogo_3__', 'Kiki_P1_', 'BEN_40001__', .... ]

+5

Вы можете сделать 'rstrip ('_')' для удаления завершающих подчеркиваний так 'some_string.rstrip ('_')' – EdChum

+0

будет ли это удалить все '_'-й в строка или ju в конце? –

+0

Просто в конце попробуйте: '' __as_das ___ '. Rstrip (' _ ') ' – EdChum

ответ

5

Вы можете использовать rstrip('_') для удаления завершающего подчеркивает:

In [15]: 
'__as_das___'.rstrip('_') 

Out[15]: 
'__as_das' 

Таким образом, вы можете видеть, что все ведущие подчёркивания и любой в середине строки не изменяется, см Документов https://docs.python.org/2/library/string.html#string-functions

Для того, чтобы ответить на ваш обновленный вопрос, который вы можете использовать список понимание, чтобы обновить каждую строку в списке:

In [18]: 
a = ['Anna__67_______', 'Dyogo_3__', 'Kiki_P1_', 'BEN_40001__'] 
a = [x.rstrip('_') for x in a] 
a 

Out[18]: 
['Anna__67', 'Dyogo_3', 'Kiki_P1', 'BEN_40001'] 
+0

Я пробовал этот код: 'data_trimmed = [] для x в данных: x.rstrip ('_') data_trimmed.append (x)', но он не работает для меня :-( –

+0

это должно быть s_trimmed.append (x.rstrip ('_')) – Mixone

+2

@AnnaJeanine Вам нужно повторно инициализировать значение 'x' как' x = x.rstrip ('_') '. Вы также можете записать всю эту логику как:' data_trimmed = [ x.rstrip ('_') для x в данных] ' –

2

использование метода строки rstrip содрать нежелательную _

s = 'anything__' 
s = s.rstrip('_') # s becomes 'anything' 

регулярное выражение немного избыточна для этого , это может быть сделано, как показано ниже

import re 
s = 'anything__' 
s = re.sub('_+$', '', s) # s becomes 'anything' 
Смежные вопросы