2016-11-11 7 views
0

これは、ファイルx.inputからそれぞれのエンティティにユニコード記号を変更するプログラムで、出力はy.outputに配置する必要があります。ただし、プログラムはそれを行わず、ファイルのコピーのみを作成します。ユニコード文字をエンティティに変更する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

添付のスクリーンショットを確認してください。 – user1469502

+0

私の解決策は有効だった、私は解決策をより良く見るのを助けるためにリプレースラインを変更した。コピー/貼り付けをしてそれを確認する。 – maki

+0

ありがとう、マキこのコードを試しましたが、それでもエラーを表示していました。プログラムファイル形式をUTF-8に変更しました(おそらく、Windowsデフォルトのエンコーディング)、実際の文字を配置します。その後はうまくいった。 – user1469502

関連する問題