2016-09-29 2 views
0

これには多くの質問と修正がありますが、私にとってはうまくいかないようです。 私の問題は、文字列を含むファイルを読み込み、各行をDBに読み込むことです。PythonでDBにロードされる見えないユニコード文字

ファイルでは通常のテキストのように見えますが、DBではユニコードスペースとして読み込まれます。私はスペースやそれに類するオプションで置き換えようとしましたが、うまくいきませんでした。テキストで例えば

文字列は次のようになりますファイル:DBに挿入した後、そこには次のように見ている、

The abrupt departure 

:私は内のデータのクエリを実行しようとしていた場合

The abrupt departure 

は、私は次のことを試してみました

"The abrupt\xc2\xa0departure" 

DBは、次のように探しています
if "\xc2\xa0" in str: 
    str.replace('\xa0', ' ') 
    str.replace('\xc2', ' ') 
    print str 

上記のコードは次のように文字列を印刷している:

The abrupt departure 

が、バックDBに挿入しながら、それはまだ同じです。

何か助けていただければ幸いです。

+2

' str.replace() 'は文字列に対して何もしません。 –

答えて

1

はこれを試してみてください:

これは、あなたがしようとしたとして置き換えると試すことができUnicode文字

>>> s = "The abrupt departure" 
>>> s = s.decode('unicode_escape').encode('ascii','ignore') 
>>> s 
'The abrupt departure' 

または、 を削除します。しかし、同じ変数に再割り当てすることは忘れてしまいます。

>>> s = "The abrupt departure" 
>>> s = s.replace('\xc2', '').replace('\xa0','') 
>>> s 
'The abrupt departure' 
+0

これはうまくいきましたが、私はそれを得ました 間にスペースがない突然の出方。 – user168983

+0

使用しているPythonのバージョンは? – Harsha

+0

2.7ですか? – user168983

1

ポイントは、文字列は不変で、あなたはreplaceからの戻り値を代入する必要がある:

s = s.replace('\xa0', ' ') 
s = s.replace('\xc2', ' ') 

また、変数名としてstrは使用しないでください。

1

C2A0は、「休憩スペース」です。 CHARATER SETの設定が矛盾する場合は、'Â 'が表示されます。

replace()を実行することは、単に問題を隠しているだけで、別の面白いキャラクターがあなたのテーブルに入ったときに役立つものではありません。あなたは間違って対正しくやっていることを言うために十分な情報を提供していないので

、私は2つの参照であなたを指してみましょう:

関連する問題