2014-01-10 21 views
0

我對Python有點新鮮。我需要從一個文件(A)讀取一些文本,將它與另一個文件(B)的文本進行比較,更改前面提到的文件的一部分並將其寫入第三個文件(C)。問題是A和B文件文件有不尋常的符號,涉及這個符號「¶」。如何處理以下符號:¶

所以,我設法通過下列方式讀取(或寫入)來繞過它(忽略):

input = codecs.open('bla.txt', 'r', 'ascii', 'ignore'); 

但它並不好。我需要以精確的方式讀取它並進行比較並寫入成功。

所以,我的B檔的內容爲:"Sugar=[[email protected]¶Cherry]" 但是當我讀它,我的變量的值Sugar=[[email protected]¶Cherry] 你可以看到,有更多的「A」

然後我的一個文件包含了很多文本需要複製到C文件中,除了在B中的上述文本之後的特定部分之外。該部分需要更改然後寫入,但它們不相同,我的程序從未進入IF條件其中我正在比較形式A的"Sugar=[[email protected]¶Cherry]"和來自B的"Sugar=[[email protected]¶Cherry]".

有沒有一種方法可以讀取t他的文字使這個符號「¶」出現,因爲它是?

+3

我的標準建議適用:閱讀[(!沒有藉口)絕對最低每一個軟件開發人員絕對,積極必須知道的關於Unicode和字符集(http://joelonsoftware.com/articles/Unicode.html) Joel Spolsky,[Python Unicode HOWTO](http://docs.python.org/2/howto/unicode.html)和[Pragmatic Unicode](http://nedbatchelder.com/text/unipain.html)由Ned Batchelder在你繼續之前。然後以UTF-8格式打開文件並解碼爲Unicode值。 –

+0

我的sys.stdin.encoding是cp1252 – Krcevina

+0

Hoa,我的問題是編碼文件A和文件B之間的差異。一個是UTF-8,另一個是ascii,這是不理想的讀取的原因。感謝這些建議,它們對於像我這樣的人非常有用。乾杯! – Krcevina

回答

1

是的。

使用正確的編碼。

input = codecs.open('bla.txt', 'r', 'UTF-8', 'ignore') 
+2

現在我們在Python 2中有'io',請改用['io.open()'](http://docs.python.org/2/library/io.html#io.open)。 'codecs'庫在緩衝方面有一些相當令人討厭的錯誤,並且它也不能很好地處理編碼錯誤。 –

+1

我會放棄'忽略';當你想正確處理文本而不是忽略問題時,最好能得到一個錯誤並知道你選擇了錯誤的編碼。 – geoffspear