2016-05-26 4 views
-1

strの句読点を削除します。TypeError:文字バッファオブジェクトが必要です。翻訳機能を実行するとき

tbl = dict.fromkeys(i for i in xrange(sys.maxunicode) 
         if unicodedata.category(unichr(i)).startswith('P')) 
def remove_punctuation(text): 
    return text.translate(tbl) 

remove_punctuation(',') 

しかし、私は、コードの実行時にエラーメッセージが表示されます。

Traceback (most recent call last): 
    File "C:/Users/user/PycharmProjects/untitled2/is_include.py", line 22, in <module> 
    remove_punctuation('') 
    File "C:/Users/user/PycharmProjects/untitled2/is_include.py", line 20, in remove_punctuation 
    return text.translate(tbl) 
TypeError: expected a character buffer object 
+1

あなたはPython 2または3を使用していますか? – qvpham

+1

あなたはどのPythonバージョンを使用していますか? Python 2.xでは、 ''、' 'は' unicode'ではなく 'str'型であり、' str.translate() 'は' unicode.translate() 'とは異なるプロトタイプを持っています。 'remove_punctuation(u '、')'の結果は何ですか? –

+0

OPは 'xrange'と' unichr'を使用していますので、Python 2です。 –

答えて

-1

text.translate()は、文字列を期待しています。最初にtblを文字列に変換してください。

def remove_punctuation(text): 
    return text.translate(str(tbl)) 

UPDATE:

または、コメントの返信で述べたSven Marnachとして、あなたはユニコード・翻訳の代わりに使用することができます。

remove_punctuation(u',')

関連する問題