0

为了处理多个 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"内置过滤器功能的参数的事实。该特定问题的两个有效解决方案侧重于传递必要的功能:

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

或者

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

2 回答 2

1

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

你可以试试:

l = filter(lambda x: x != '\u0000',rawString)
于 2013-04-17T16:31:20.957 回答
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))
于 2013-04-17T16:31:07.930 回答