2016-08-08 7 views
0

pythonの新機能。私はファイルをテストしており、ファイルに書き込まれる数値(生の入力として取得)を取得しようとしています。それから、その数値を入力パラメータとして取って、それを使って方程式を実行するための関数が必要です。ファイルに書き込むときに奇数文字がポップアップする

ただし、ファイルに書き込むときに奇妙な文字がポップアップします。私はコピーペーストでそれを見てみると、ちょうどこの奇妙な数字のブロックまたは空のスペースとしてコピーされました。ここで weird character in notepad

私のコードは、これまでのところです:

def function(x): 
    y = x + 1 
    return y 

Input = raw_input('Number?') 

with open('in_test.txt','w+') as inFile_test: 
    inFile_test.write(Input) 
    lines = inFile_test.readline() 
    lines_int = [int(x) for x in lines.split()] 
    print str(lines_int) 

f_test = function(lines_int) 
print str(f_test) 

私はまた、R +にファイル形式を変更するメモ帳でのエンコードの種類(ANSI)をチェックし、起動したエラーを探してみました。

lines_int = [int(x) for x in lines.split()] 
ValueError: invalid literal for int() with base 10: '\x02' 

私はエラーが奇妙な文字によって引き起こされていると仮定していますが、私は奇妙な文字を引き起こしているかわからないんだけど。

+0

なぜUTFエンコーディングを使用しないのですか? – Trimax

+0

'lines_int'を初期化する前に' lines.encode( 'utf-8') 'を追加してみてください – dhdavvie

答えて

0

ファイルポインタを最初に戻す必要があります。 tell()関数を使ってファイルポインタの現在位置を確認することができます。

with open('in_test.txt','w+') as inFile_test: 
    inFile_test.write(Input) 
    print inFile_test.tell() 
    inFile_test.seek(0) # re-position the file pointer to the beginning 
    lines = inFile_test.readline() 
    lines_int = [int(x) for x in lines.split()] 
    print str(lines_int) 

また、function()の呼び出しが間違っているため、intを受け入れるように定義していますが、list引数を指定して呼び出しています。

+0

ありがとう、文字の問題を修正しました。私はあなたの6行目のコードは、文字列/リストを取ってintに変換することを意図していると思いましたか? – Cyanidies

+0

リスト内包はリストオブジェクトを作成します。したがって、lines_intはint型のリストです。したがって、関数は関数(lines_int [0])か、リストを次のように展開することができます--- function(* lines_int) –

関連する問題