首页 > 解决方案 > 删除尾随字符

问题描述

我认为下面的这段代码可以删除 a 中每个元素的尾随字符。我无法理解输出

a = ['wonderland@', 'alice,', 'in!$', 'book:']

for index, word in enumerate(a):
    for ch in '@!$,:':
        a[index] = word.strip(ch)
print(a)

>>>['wonderland@', 'alice,', 'in!$', 'book']

标签: pythonpython-3.xstringliststrip

解决方案


受到推崇的:

通过列表理解尝试rstrip这种方式:

a = ['wonderland@', 'alice,', 'in!$', 'book:']
print([i.rstrip('@!$,:') for i in a])

或尝试regex

import re
print([re.sub('[@!$,:]+$', '', i) for i in a])

两个代码输出:

['wonderland', 'alice', 'in', 'book']

不建议:

您的代码不起作用的原因是因为您可能会很好地匹配最后的字符,但下一次迭代您仍会尝试从原始字符串中剥离,而不是您在之前的迭代中刚刚剥离的字符串. 你也使用strip了,所以可能只有一个字符会被条纹,所以你还需要使用sorted, 来修复你的代码:

a = ['wonderland@', 'alice,', 'in!$', 'book:']
for index, word in enumerate(a):
    for ch in sorted('@!$,:', key=word.find)[::-1]:
        a[index] = a[index].strip(ch)
        print(a)
print(a)

 

输出:

['wonderland', 'alice', 'in', 'book']

推荐阅读