Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不删除空值(Python)_Python_String_Python 3.x_Null - Fatal编程技术网

不删除空值(Python)

不删除空值(Python),python,string,python-3.x,null,Python,String,Python 3.x,Null,为了处理多个CSV文件的内容,我必须从字符串列表元素中过滤几个字符,最明显的是空值。为此,我尝试了几种网络解决方案。其中之一是以下功能: def removeNull(rawString): l = filter("\u0000", list(rawString)) newString = ''.join(l) printUtil.printAll(newString, "\n") return newString l = filter(lambda x: x

为了处理多个CSV文件的内容,我必须从字符串列表元素中过滤几个字符,最明显的是空值。为此,我尝试了几种网络解决方案。其中之一是以下功能:

def removeNull(rawString):
    l = filter("\u0000", list(rawString))
    newString = ''.join(l)
    printUtil.printAll(newString, "\n")
    return newString
l = filter(lambda x: x != '\u0000',rawString)
但是,它总是给我
类型错误:“str”对象不可调用,终止程序。更复杂的解决方案并没有给我一个错误,但它们完全没有改变任何东西,空值仍然存在

此外,如果我用任何其他值交换
\u0000
,但
None
(这不会导致任何更改),我将收到相同的错误消息

希望有人能帮我解决这个问题,因为经过4到5个小时的反复试验,我已经失去了主意

谢谢你的回答和建议

解决问题:

错误消息源于这样一个事实,即我使用
“\u0000”
作为内置过滤器函数的参数。针对该特定问题的两个有效解决方案侧重于传递必要的函数:

def removeNull(rawString):
    l = filter("\u0000", list(rawString))
    newString = ''.join(l)
    printUtil.printAll(newString, "\n")
    return newString
l = filter(lambda x: x != '\u0000',rawString)

应该会更好

让它更透明

def is_not_null(ch):
    return ch != u'\u0000'

print filter(is_not_null,list(rawString))

filter
要求第一个参数是函数(或者更准确地说是可调用的
)。然后它迭代第二个参数,将每个参数传递给函数。如果函数返回类似False的值,则在输出中跳过该值

你可以试试:

l = filter(lambda x: x != '\u0000',rawString)

这将删除空值。然而,对于给定的输入,它会在之后返回胡言乱语。我不知道为什么在只删除空值的情况下,编写文件的过滤内容与原始内容和控制台输出完全不同。如果需要的话,我可以上传我的输入和输出文件,以便更清楚地知道发生了什么。编辑:Joran Beasley的解决方案也是如此。需要澄清的是:进入删除函数的字符串在保存到文件时表现得像字节数组,至少我必须进入二进制写入模式。不幸的是,我不太了解这个结果,但至少它现在起作用了。在控制台窗口中,结果似乎是正确的,但是在将其保存到文件时出现了意外问题(请参阅我对mgilson解决方案的响应)。我将在稍后进行研究。多亏了你们两位,最终的解决方案可能就在眼前。