2016-08-09 2 views
0

別のプログラム(3が上付き文字)で読み込まれるファイルに足をcubed(ft ** 3)で書く必要があります。指数付きの文字列をファイルに書き込む必要があります

"エンコーディングファイル[ファイル名]を" ascii "エンコーディングにすると情報が失われます。続けたいですか?"

私が使用しているコマンドは次のとおりです。

f.write('Units ft³\n') 

私はどのような種類の情報を失うことになりますか?スクリプトから入力ファイルに「ft³」(アスキー形式で入力しますか?)と書くにはどうすればよいですか?どこから始めたらいいのかわからないので、どんな情報もありがたいです。

違いがあればPyScripter IDEを使用しています。

+3

アスキーは文字 '³'をサポートしていません。あなたはutf8のような、より現代的なエンコーディングを使用できませんか? – Mephy

答えて

0
with open('some_file.txt','wb'): # save non-ascii bytes (superscript 3 might even work with just 'w') 
    f.write('Units ft\xb3\n') #\xb3 is the superscript 3 in utf8 encoding 

あなたは

0

Joranのオプションは、私のテキストエディタのために動作しますが、残念ながら置換文字(と遭遇最もテストエディタによって認識されるこれを行うことができます)私が開こうとするとプログラムで入力ファイル。プログラムはMicr $ oft File.ReadAllLinesメソッドを使用しているので、utf8でエンコードされている場合はテキストを読み取ることができるはずです。

file.write('units ft'+'\xb3'+'/day\n'.encode('utf8')) 

残念ながら、私はまだプログラムでファイルを開こうとすると、置換文字を取得しています。私はカットし、テキストエディタからラインを貼り付ける際に、入力ファイルはテキストエディタで正常に見えると:

Units ft³/day 

Mephyの質問に答えるために:私はからft³/日の文字列をコピーした際にASCII文字に関するエラーが来たの既存の入力ファイルをそのままPythonスクリプトに貼り付け、Pythonがプログラムの読み込みと同じ方法で書き込むことを期待していましたが、それはどちらもうまくいきませんでした。 UltraEditでファイルを比較すると、行は同じであると報告されますが、プログラムは作成したものを読み込みますが、私のpythonスクリプトは生成しません。ユニットを指数部(acre-feet)がないものに変更するとうまく動作します。

(明確にするために、私はオリジナルを投稿したユーザーだ。しかし、私はそのアカウントのパスワードを紛失したとアウトでそれを2つのアカウントをマージすることはできません。)

+0

アカウントをマージするには、各ページの下部にある[お問い合わせ]リンクからサイトにアクセスしてください。次に、この新しい情報をあなたの質問に編集することができます。これは**あなたの答え**ボックスのためのものではありません。 – usr2564301

+0

私はそれを試みた。指定された48時間以内に各メールアドレスに送信されたリンクをクリックしました。私が受け取った唯一のフォローアップ電子メールは、私がリンクをクリックしなかったために私のアカウントがマージできなかったということでした。だから私はあきらめた。 私は「回答」を投稿するのではなく、コメントしていますが、評判のポイントが足りません。私は自分の答えを投稿して自分の答えにコメントすることができて奇妙だと思うが、他の人の答えであるdonchathinkについてはコメントできない?そのため、コミュニティとやりとりする他の選択肢はありませんでした。 –

+0

ご迷惑をおかけして申し訳ありません。 AFAIKは面倒ではありませんでした。どうぞ、[meta]に投稿してください。それはあなたの問題をどう扱うかを知っている人々の注目を集めるでしょう。それはコミュニティと交流するのに適した場所です。 – usr2564301

0

さて、問題は解決しました。 Joranを正しい方向に向かわせてくれてありがとう。私は.encode('utf8')の文字列を持っている理由はわかりませんが、\xb3はすでにutf8に入っています。しかし、私は試してみましたが、.encode('utf8')がなければ動作しません。

2番目のポストでは、文字列の間違った部分をエンコードしていました。これらの作品のどちらか:

f.write('Units ft'+u'\xb3'.encode('utf8')+'/day\n') 

またはencode('utf8')行全体は:

f.write(('Units ft'+u'\xb3'+'/day\n').encode('utf8')) 

一方が他方よりも優先されていますか?

関連する問題