python删除奇怪的字符
我试图删除任何包含奇怪字符的句子,比如下面有很多奇怪下划线的句子python删除奇怪的字符,python,regex,function,Python,Regex,Function,我试图删除任何包含奇怪字符的句子,比如下面有很多奇怪下划线的句子 sentence=='"____ __,_____________.._____________________" 首先,我创建了一个函数,该函数可以发现奇怪的字符,如果为真,我们将忽略这句话: def underscore_filter(s): return "____ __," in s filter_fn_list = [underscore_filter] for fn in
sentence=='"____ __,_____________.._____________________"
首先,我创建了一个函数,该函数可以发现奇怪的字符,如果为真,我们将忽略这句话:
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\u fn\u列表中。但是,我认为您需要创建一个函数列表,稍后可以在循环中调用这些函数。因此,你应该:
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)]
打印生成的过滤句子列表产生以下输出:
['abcd','sdf']
你的压痕有点模糊。它可能是在StackOverflow上计算出降价渲染器的一个工件,也可能是混合了空格和制表符(不要这样做…使用python-t yourscript.py运行以获得有关该问题的警告)。无论如何,你发布的代码似乎是可疑的filter\u fn\u list=[下划线过滤器]
将是[True]
或[False]
(取决于s
),这与以后的用法完全不匹配。。。事实上,对于这段代码,我期望出现某种异常……顺便说一句,根据您的代码如果filter\u match==True:continue
是完全不必要的。为什么下划线很奇怪?公平地说,他们可能认为你是。对于未来的问题,请在你的问题中包括当前和完整的代码示例。看见它可以防止人们浪费时间指出代码中与当前问题无关的内容,或者是您已经修复的错误。