2014-11-03 21 views
0

我有一个函数change_sentence需要两个参数“句子”和“删除”。 我希望句子每次在“删除”中的字符都会被分割。然后我希望每个单词都被移到列表中。因此,例如如何去除其中一个参数中的特定字符?

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

将返回

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

我尝试使用分割功能,但我不知道该如何。谢谢您的帮助

回答

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

谢谢删除任何尾随空格你但是有任何w唉,这样做只用于/ while循环/ if语句?我不是这个先进的,我不知道如何从作品。 – 2014-11-03 22:18:40

+0

@BobStar使用from只是从模块中导入一个函数,从re(每个python附带的正则表达式模块)导入分割。 – aseeon 2014-11-04 05:40:09

0

我没有看过你的问题之前妥善我觉得所以在这里我一个更好的解决方案,它是一个(功能)使用了/若:

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

您可以使用列表中理解删除空字符串

>>> [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'] 
相关问题