[英]python removing weird characters
我正在尝试删除所有包含怪异字符的句子,例如以下带有许多怪异下划线的句子。
sentence=='"____ __,_____________.._____________________"
我首先创建一个发现奇怪字符的函数,如果为true,则忽略该句子:
def underscore_filter(s):
return "____ __," in s
filter_fn_list = [underscore_filter]
for fn in filter_fn_list:
if fn(sentence):
filter_match = True
break
if filter_match == True:
continue
所以实际上问题只在于功能部分:
def underscore_filter(s):
return "____ __," in s
我只是不明白,尽管在我的函数中返回了完全相同的下划线模式,但是当我调用它时该函数的输出始终为false。 有什么问题,我怎么能重写这段代码? 我仍然需要它采用这种相似的格式。
我在最后添加了“ continue”,因为我的代码实际上是在读取CSV文件的各行。 如果该行包含奇怪的字符,我将跳过该行。
你可以通过lambda
实现这个。
def underscore_filter(s):
return "____ __," in s
filter_match = False
sentence = "____ __,_____________.._____________________"
filter_fn_list = [ lambda s:underscore_filter(s) ]
for fn in filter_fn_list:
if fn(sentence):
filter_match = True
break
print filter_match
顺便说一句,我不明白为什么你在循环中添加了continue
部分,在我看来这是完全没必要的,所以我放弃它。
我认为问题在于这一行:
filter_fn_list=[underscore_filter(s)]
它做什么,它返回true或False到filter_fn_list。 但是,我想你想要制作一个函数列表,你可以稍后在循环中调用它们。 因此,您应该执行以下操作:
filter_fn_list=[underscore_filter]
我认为您正在使此过程变得比所需的复杂。 使用列表推导尝试以下更简单的选择:
# list of sentences we want to filter
sentences = ["abcd", "a____ __,", "sdf", "ghke_______kh"]
# list of patterns we want to filter out
bad_patterns = ["____ __,", "_______"]
# perform the filtering
filtered_sentences = [s for s in sentences
if not any(pattern in s for pattern in bad_patterns)]
打印结果所得的filtered_sentences
列表将产生以下输出:
['abcd','sdf']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.