2017-01-11 4 views
0

NERにPyner(https://github.com/dat/pyner)を使用しようとしています。私はそれから名前付き実体を抽出するためにそれを文字列で与えます。しかし、私はエラーが発生します。私は、問題はそれが置き換えだと思う私は、入力の複数の種類を試してみても、このエラーは(オブジェクトをバイト)が発生Pythonの文字列置換が機能しません(バイト入力が必要ですか?)

for s in ('\f', '\n', '\r', '\t', '\v'): #strip whitespaces 
    text = text.replace(s, '') 

Error message: {TypeError: a bytes-like object is required, not 'str'} 

text = b'This' 
text = bytes("This".encode('utf-8')) 

を取得していない:私は、エラーが発生しsnipetを添付しています右入力タイプ。私はPython 3.5を使用しています。私は間違って何をしていますか?助けてください!

+0

あなたは最初と最後だけから空白を削除しようとしていますか?それだけで 'strip'関数があるからです。すべての空白を削除している場合は、空白がないことに注意してください。 '' ' –

答えて

2

replaceは、strまたはbytesで動作しますが、両方は混在しません。

あなたはこのようにそれを書き換えることもできます。また

text = text.strip() # remove all of the above + space 

可能:しようとし、事前にstrに戻って変換します

for s in (b'\f', b'\n', b'\r', b'\t', b'\v'): #strip whitespaces except space! 
    text = text.replace(s, b'') 

あなたもbytesタイプで動作stripを適用することができ

text = str(text) 

または

text = text.decode('utf-8') 

(パトリックが述べたように、サードパーティ製のパッケージを変更しないようにする最適なソリューションを選択してください)

+0

これは私のために働きます。だから私は、パッケージのコード行をこれに変更する必要があると思います。ありがとうございました! – SashaGreen

+1

@SashaGreenこれは、パッケージが文字列で動作するように設計されているが、バイトで動作させようとしていることを意味します。変更を加える前に十分に注意してください。あなたがやっていることにこのパッケージが必要な場合は、elsesのコードではなく入力を変更するようにしてください。 –

+0

それは良い点です。ありがとう! – SashaGreen

関連する問題