2016-11-11 46 views
0

這是一個將unicode符號從文件x.input更改爲其各自實體的程序,輸出應放置在y.output。但是,該程序不會這樣做,只會創建該文件的副本。將unicode字符更改爲實體的Python程序

我已經Python27和35都顯示這個問題,該平臺是贏7

我要去哪裏錯了?請幫忙。

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
#import io 

f1 = open('x.input').read() 
f2 = open('y.output','w') 
for line in f1: 
    x = line.replace('「', '“') 
    f2.write(x) 
#f1.close() 
f2.close() 

整個節目的截圖: Actual program with the double quote which is creating issues

+0

你只用'“'替換所有'''你應該關閉f1 –

+0

你以前是否曾經使用python?這段代碼很容易理解,所以我很難理解你究竟是什麼 –

+0

x.input文件的編碼是什麼 –

回答

0

的問題是有點棘手,你從一個文檔,其中的字符「(ORD 226)是不是「有一個複製/粘貼錯誤你期望(ord 34)(注意它們是相似的,但略有不同)很可能你從Word文檔複製了這個例子

只需用正確的字符替換這個字符,你的程序就可以工作。 (從這裏複製/粘貼,以便得到正確的字符):

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
#import io 

f1 = open('x.input').read() 
f2 = open('y.output','w') 
for line in f1: 
    x = line.replace(ord(34), '“') 
    f2.write(x) 
f1.close() 
f2.close() 

即使不需要(文件將在程序結束時關閉),因爲好的公民也會關閉f1。

注意:編輯爲更清楚的解決方案,看看如何更換替換線。

+0

請檢查問題中的附件截圖替換不適用於該字符,字符如em破折號和破折號,它可以流暢地進行正常的替換 – user1469502

+0

我的解決方案是有效的,我改變了替換線,以幫助你更好地看到解決方案,做一個複製/粘貼並檢查它。 – maki

+0

謝謝,Maki。I嘗試了這段代碼,但仍然顯示錯誤,然後我將程序文件格式更改爲UTF-8(也許它有Windows默認編碼),然後把實際的字符。那之後它運行良好。 – user1469502

相關問題