没有删除空值(Python)

时间:2013-04-17 16:29:14

标签: python string python-3.x null

为了处理多个CSV文件的内容,我必须从string-list-elements中过滤掉几个字符,最明显的是NULL值。为此,我尝试了网上的几个解决方案。其中之一是以下功能:

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

然而,它总是给我TypeError: 'str' object is not callable,终止程序。更复杂的解决方案没有给我一个错误,但他们完全没有改变,而NULL值仍然存在。

此外,如果我将\u0000除了None之外的任何其他值(这导致没有更改),我收到相同的错误消息。

希望有人可以为我解决这个问题,因为在经过4或5个小时的试错之后我就没有想法了。

感谢您的回答和建议!

解决问题:

错误消息源于这样一个事实:我使用"\u0000"作为filter-function中构建的参数。针对该特定问题的两个有效解决方案集中于传递必要的功能:

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

l = filter(lambda x:ord(x) != 0, list(rawString))

2 个答案:

答案 0 :(得分:1)

filter期望第一个参数是函数(或者更准确地说是callable)。然后迭代第二个参数,将每个参数传递给函数。函数返回类似False的值时,会在输出中跳过它。

你可以尝试:

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

答案 1 :(得分:0)

l = filter(lambda x:ord(x) != 0, list(rawString))

应该更好用

使其更透明

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

print filter(is_not_null,list(rawString))