在字符串列表中修剪单词

2024-10-03 17:16:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在写一些代码,把字符串列表中的单词删减。如果字符串中单词的最后一个字符是“t”或“s”,则会将其删除,如果第一个字符是“x”,则会将其删除。你知道吗

words = ['bees', 'xerez']

应返回:

['bee', 'erez']

到目前为止,我的解决方案是:

trim_last = [x[:-1] for x in words if x[-1] == 's' or 't']   

我认为这可以很好地修饰最后几个字。然后,如果第一个字符是“x”,则使用此行修剪它们:

trim_first = [x[1:] for x in trim_last if x[0] == 'x'] 

但这只是返回一个空列表,我可以如何将它合并到一个工作行中?你知道吗


Tags: 字符串代码in列表forif字符单词
3条回答

你在做过滤,不是映射。 正确的方法是

trim_first = [x[1:] if x.startswith('x')  else x for x in trim_last]

另外,您的解决方案不应该返回空列表,因为过滤器将匹配第二个元素

[v.lstrip('x').rstrip('ts') for v in words]

在使用^{}函数的一个步骤中:

import re

words = ['bees', 'xerez']
result = [re.sub(r'^x|[ts]$', '', w) for w in words]

print(result)

输出:

['bee', 'erez']

相关问题 更多 >