2016-09-29 30 views
0

對此有很多問題和修復,但沒有一個似乎適用於我。 我的問題是我正在閱讀一個帶有字符串的文件並將每行加載到數據庫中。在Python中加載到數據庫的隱形Unicode字符

在文件中它看起來像普通文本,而在數據庫中它是作爲unicode空間讀取的。我試着用一個空間和類似的選項替換它,但都沒有工作。

例如,在文本文件中的字符串將是這樣的:

The abrupt departure 

插入數據庫之後,它看起來像:

The abrupt departure 

當我試圖在運行數據查詢DB,它看起來像:

"The abrupt\xc2\xa0departure" 

我試過如下:

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作爲變量名。

相關問題