Python:从String的末尾修剪下划线

时间:2016-11-22 11:26:17

标签: python arrays

大家好!我正在尝试调试某些代码,我发现了问题。程序循环遍历一串字符串并计算某些结束。问题是这些字符串中的一些以_结尾,因此计数错误。我想使用正则表达式,但我没有足够的经验。有人能帮助我吗?

我想遍历数组并按字符串检查它是否以_(' 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__', .... ]

2 个答案:

答案 0 :(得分:7)

您可以使用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']

答案 1 :(得分:3)

使用字符串rstrip方法去除不需要的_

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

正则表达式对此有点矫枉过正,可以按照以下方式完成

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