python - 删除尾随字符
问题描述
我认为下面的这段代码可以删除 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']
解决方案
受到推崇的:
通过列表理解尝试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']
推荐阅读
- c# - 为什么我可以在不使用 Observable Collection 或调用 Items.Refresh() 的情况下更新 DataGrid itemsource?
- r - 从 SPSS 获取数据帧的子列名到 R (read.spss)
- javascript - 如何使用 Vue JS 为向导类型的表单设置动画
- android - Android Instant App URL 执行问题
- python - XML到base64使用python
- swift - UITableView.appearance().backgroundColor init 基于horizontalSiceClass
- php - 页面模板上的 wordpress get_header() 获取正文标记内的头部内容
- c# - 如何以流的形式读取 xml 属性值的内容
- sql - 添加标记列的最大值和最小值的列
- qt - 在qt中重新启动应用程序后如何使计数器连续