繁体   English   中英

如何剥离参数之一中的特定字符?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM