2014-10-28 205 views
0

我使用xlrd將一個excel文件加載到python3中。它們基本上是電子表格中的文本行。在這些行中有一些是引號。例如,一條線可以是:在python字符串中刪除奇怪的雙引號(來自excel文件)

她說:「我的名字是詹妮弗。」

當我將它們讀入python並將它們變成字符串時,雙引號會被讀入爲一個奇怪的雙引號字符,它看起來像斜體的雙引號。我假設在某個地方,由於某些編碼問題或某些事情,python會將字符讀作某些外來字符,而不是實際的雙引號。所以在上面的例子中,如果我將該行分配爲「文本」,那麼我們會得到類似以下的內容(儘管不完全是因爲我實際上沒有輸出該行,所以想象「文本」已經預先分配) :

text = 'She said, 「My name is Jennifer.」' 
text[10] == '"' 

第二行會吐出一個False,因爲它似乎並不認爲它是一個普通的雙引號字符。如果這有所幫助,我正在Mac終端內工作。

我的問題是: 1.有沒有辦法輕鬆去除這些奇怪的雙引號? 2.當我在文件中讀取python以正確識別它們爲雙引號時,有沒有辦法?

+1

它們是Unicode:'''是U + 201C,'''是U + 201D。你需要用''''U + 0022替換它們。 – 2014-10-28 07:52:51

回答

2

我假設沿途某處,蟒蛇在字符閱讀一些外文字符

是;它讀入,因爲這是文件數據實際表示的內容。

而不是實際的雙引號由於某些編碼問題或某事。

編碼沒有問題。實際的字符不是「實際的雙引號」。

有沒有辦法輕鬆去除這些奇怪的雙引號?

您可以像通常那樣使用.replace字符串的方法,以將其替換爲「實際雙引號」或不帶任何內容。

有沒有一種方法,當我在文件中讀取以獲取python以正確識別它們爲雙引號?

如果你正在尋找他們,你可以將他們與他們實際上的角色進行比較。

正如在評論中指出的,他們很可能是U+201C LEFT DOUBLE QUOTATION MARKU+201D RIGHT DOUBLE QUOTATION MARK。它們的使用方式使得開始和結束的引用看起來可以不同(通過在不同的方向上彎曲),這通常是非常漂亮的印刷術(而不是使用",這對於程序員來說更簡單)。你代表他們在Python用Unicode轉義,即:

text[10] == '\u201c' 

你也可能直接問Python的這個信息,通過詢問text[10]在Python的命令行(這將評價說,告訴你的表示) ,或明確地在一個腳本與例如print(repr(text[10]))