0

複数の CSV ファイルのコンテンツを処理するために、string-list-elements からいくつかの文字 (特に NULL 値) をフィルター処理する必要があります。このために、私は Web からいくつかのソリューションを試しました。それらの1つは次の関数です。

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"エラーメッセージは、組み込みのフィルター関数の引数として使用したという事実に由来しています。その特定の問題に対する 2 つの有効な解決策は、必要な関数を渡すことに焦点を当てています。

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

また

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

2 に答える 2

1

filterは、最初の引数が関数(または、より正確には) であることを期待していますcallable。次に、2 番目の引数を繰り返し処理し、それぞれを関数に渡します。関数が 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 に答える