[英]How to strip specific characters that are in one of the parameters?
我有一个函数change_sentence,它带有两个参数“ sentence”和“ remove”。 我希望每次遇到“删除”中的字符时都要对句子进行拆分。 然后,我希望将每个单词移到一个列表中。 所以举个例子
change_sentence('Hello- I am! Very happy?', '-!?')
将返回
['Hello', 'I am', 'Very Happy']
我尝试使用split函数,但不确定如何。 谢谢您的帮助
from re import split
txt = 'Hello- I am! Very happy?'
breaks = '[-!?]' # square brackets makes it a proper regexp that we need
splitted = split(breaks, txt)
# ['Hello', ' I am', ' Very happy', '']
filtered = filter(bool, splitted)
# ['Hello', ' I am', ' Very happy']
cleaned = [element.strip() for element in filtered]
# ['Hello', 'I am', 'Very happy']
在思考之前,我没有正确阅读您的问题,因此在这里,我提供了一个更好的解决方案,该解决方案是用于/ if的(函数):
def change_sentence(sent, remove):
T=tuple()
L=[]
for i in list(sent):
if i not in remove:
T+=tuple(i)
else:
L.append(''.join(T))
T=tuple()
return L
您还可以使用递归函数
def change_sentence(a,b):
if len(b) == 0:
return a
else:
return change_sentence(sum([i.split(b[0]) for i in a],[]),b[1:])
该函数按b
的每个字符分隔句子。 为了使它起作用,您的句子应该是列表。
sentence = ["Hello- I am! Very happy?",]
remove = "-!?"
然后
>>> change_sentence(sentence,remove)
['Hello', ' I am', ' Very happy', '']
您可以使用列表推导删除空字符串
>>> [i for i in change_sentence(sentence,remove) if i]
['Hello', ' I am', ' Very happy']
并从列表中删除使用任何尾随空格strip
>>> [i.strip() for i in change_sentence(sentence,remove) if i]
['Hello', 'I am', 'Very happy']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.