[英]Conditional removal of items from list and iterate from beginning through Python loop
[英]Conditional Removal of suffix from words in a python list
我必须执行的任务如下:
假设我有一个单词列表(仅举一个例子...该列表可以包含任何单词):
'yappingly', 'yarding', 'yarly', 'yawnfully', 'yawnily', 'yawning','yawningly',
'yawweed', 'yealing', 'yeanling', 'yearling', 'yearly', 'yearnfully','yearning',
'yearnling', 'yeastily', 'yeasting', 'yed',
我要创建从其中具有后缀单词的新列表ing
去除后缀(即yeasting被添加到新的列表作为酵母)后,并将该剩余的词被添加,因为它是
现在,就插入以ing
结尾的字符串而言,我编写了以下代码,它可以正常工作
Data=[w[0:-3] for w in wordlist if re.search('ing$',w)]
但是如何将剩余的单词添加到列表中呢? 如何在上述if语句中添加else
子句? 我找不到上述合适的文档。 我确实在SO上遇到过几个有关速记if语句的问题,但是仅仅在上述代码的末尾添加else语句是行不通的。 我该怎么办?
其次,如果我必须将上述正则表达式扩展为多个后缀,请说如下:
re.search('(ing|ed|al)$',w)
如何执行“修剪”操作以相应地删除后缀,同时将单词添加到新列表中? 请帮忙。
首先,是什么让您认为根本不需要正则表达式? 有更简单的方法来删除后缀。
其次,如果要使用正则表达式,为什么不只使用re.sub
而不是尝试使用正则表达式并切片呢? 例如:
Data = [re.sub('(ing|ed|al)$', '', w) for w in wordlist]
然后,您无需算出要分割的部分(这将需要您跟踪re.search
的结果,以便获得组的长度,而不仅仅是将其变成布尔值)。
但是,如果你真的想要做的事情你的方式,只需更换你的if
有一个条件表达式过滤器,如iCodez的答案。
最后,如果您对如何将某些东西装入单衬管中感到困惑,只需将其从单衬管中取出即可。 编写一个strip_suffixes
函数应该很容易,该函数返回带后缀剥离的字符串(如果没有后缀,则为原始字符串)。 然后,您可以编写:
Data = [strip_suffixes(w) for w in wordlist]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.