如何去除其中一个参数中的特定字符?

时间:2014-11-03 21:53:20

标签: python list function split

我有一个函数change_sentence,它接受两个参数"句子"和"删除"。 我希望每次在"删除"中的字符时分割句子。遇到了。然后我希望每个单词都移动到一个列表中。例如,

change_sentence('Hello- I am! Very happy?', '-!?') 

将返回

['Hello', 'I am', 'Very Happy']

我尝试使用拆分功能,但我不确定如何。谢谢你的帮助

3 个答案:

答案 0 :(得分:2)

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']

答案 1 :(得分:0)

在我这么想之前我没有正确地阅读你的问题这里我是一个更好的解决方案,它是一个(函数)用于/ 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

答案 2 :(得分:0)

您还可以使用递归函数

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', '']

您可以使用list comprehension删除空字符串

>>> [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']