大家好!我正在尝试调试某些代码,我发现了问题。程序循环遍历一串字符串并计算某些结束。问题是这些字符串中的一些以_
结尾,因此计数错误。我想使用正则表达式,但我没有足够的经验。有人能帮助我吗?
我想遍历数组并按字符串检查它是否以_
(' 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__', .... ]
答案 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'