2016-11-22 68 views
3

大家好!我想調試someones代碼,我發現了這個問題。程序通過一系列字符串循環並計數特定的結束。問題是這些字符串中的一部分以_結尾,所以計數出錯。我想使用正則表達式,但我沒有足夠的經驗。有人能幫助我嗎?Python:從字符串末尾修整下劃線

我想遍歷數組和每個字符串檢查它是否以_('s)結尾,並將所有這些_關閉以將它們再次放入數組中!

更新

感謝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 = [] for x in data:x.rstrip('_')data_trimmed.append(x)'但它不適用於我:-( –

+0

它應該是s_trimmed.append (x.rstrip('_')) – Mixone

+2

@AnnaJeanine您需要將該值重新初始化爲'x'爲'x = x.rstrip('_')'。您也可以將整個邏輯寫爲:'data_trimmed = [ x.rstrip('_')for x in data]' –

2

使用字符串rstrip方法來去掉不必要_

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

正則表達式是這個有點矯枉過正,這是可以做到如下

import re 
s = 'anything__' 
s = re.sub('_+$', '', s) # s becomes 'anything'