为了处理多个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))
答案 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))