我正在尝试创建一个选择性字符串过滤器。我希望能够删除除了我选择保留的字符之外的所有字符。
例如,如果我输入字符串:“我只想要元音”
它会回归:“Ioaeoe”
如果输入,所有其他字符(辅音,数字,符号)将被忽略。 请帮忙。
答案 0 :(得分:2)
您可以使用此代码:
input_string = "I only want the vowels"
allowed_chars = 'AEIOUaeiou'
output_string = ''.join((c for c in input_string if c in list(allowed_chars)))
但是还有更多可能的解决方案,例如使用正则表达式定义的范围。
答案 1 :(得分:1)
出于您的目的,您可以使用lambda函数执行类似的操作:
def is_vowel(c):
if c.lower() in ['a', 'e', 'i', 'o', 'u']: return True
return False
str = 'trial string'
def filter_vowel_string(str):
return filter(lambda c: is_vowel(c), str)
def filter_consonant_string(str):
return filter(lambda c: not is_vowel(c), str)
print filter_vowel_string(str)
print filter_consonant_string(str)
您可以将要实现的所有条件函数定义为过滤器。在您的特定情况下,您需要编写一个函数来检查字母是否是元音:
def is_vowel(c):
if c.lower() in ['a', 'e', 'i', 'o', 'u']: return True
return False
然后,过滤字符串。同样适用于其他滤镜。理想情况下,您可以将字符串传递给所需的所有过滤器并获取最终字符串。
希望这有帮助。