我如何在 python 中使用过滤功能?

How i can use filter function in python?

我想删除字典中不需要的字符,如:$&@“”''!?,#%*=…
我只想要数字、字母和下划线。

如果您想清理字符串以删除所有特殊字符,请试试这个函数:

def sanitize(string):
  outstr = ""
  for char in string:
    if char.isalpha() or char.isdigit() or char == "_":
      outstr += char
  return outstr

如果文本不是标点符号(你不想要),你可以做一个 lambda that returns True,除了 '_'我们将使用 .replace("_","") 删除,然后使用 filter 函数将其应用到 list,然后使用 '':[=24= 将其应用到 join ]

from string import punctuation
string_to_parse = "a$ ehl! th!s i$ "
parse=lambda letter:letter not in punctuation.replace("_",'') 
stringcompleted = ''.join(filter(parse,string_to_parse))
print(stringcompleted)

输出:

'a ehl ths i '

你可以把它包装成一个函数,像这样:

>>> def parses(string_to_parse):
...     parse=lambda letter:letter not in __import__("string").punctuation.replace("_",'')
...     return ''.join(filter(parse,string_to_parse))
...
>>> parses("s/)+(=i;~q8cze%]*'y:|,f")
'siq8czeyf'

但这使用动态导入, 来自我的 test,导致时间是另一个的两倍所以我建议正常导入:

>>> def parses(string_to_parse):
...    from string import punctuation
...    parse=lambda letter:letter not in punctuation.replace("_",'')
...    return ''.join(filter(parse,string_to_parse))
>>> parses("s/)+(=i;~q8cze%]*'y:|,f")
'siq8czeyf'