2016-07-25 3 views
0

値をPythonリストに追加するときに奇妙な動作が発生しています。私はopenpyxlを使用して複数のExcelファイルの値を読み込み、数学を行い、新しいExcelファイルに書き出します。しかし、ヘッダー列の行をループして値をリストに追加するとき、リストの最終結果はセルの値に「L」を加えたものになります。python list.append(values)Lを値に追加する

は、誰かが何を私に説明でき

xl_file = 'path/to/excel/file.xlsx' 
wb = openpyxl.load_workbook(xl_file, data_only=True) 
sheet = wb.get_sheet_by_name("sheetname") 

hdr_col = [] # empty list to store contents of column header 
for r in range(3, 13): # we want rows 3-12. rows 1 and 2 of column hdr are empty 
    val = sheet.cell(row=r, column = 1).value 
    print val # prints the actual value (1, 2, 3,..., 10) 
    hdr_col.append(val) 
print hdr_col # prints values with L, i.e.: 

[1L、2L、3L、4L、5L、6L、7L、8L、9L、10L]:たとえば、ここに私のコードの関連部分でありますやっている?最初はopenpyxlモジュールだと思っていましたが、Lは値をリストに追加した後に追加されるだけなので、実際はPythonだと思っています。

+0

なぜこれは特に重要ですか? –

+0

@DanielRosemanそれは、私はちょうど興味があった。私はそれがちょうど値がリストからループし、値とそのタイプを印刷することからLong型であることを知っていました。そして、下の人は私の質問に彼らがなぜそのように印刷しているのかについて答えました。 – user20408

答えて

1

ためprint戻り、人間が読める形式 あなたの文 print valprintの代わりにreprを使用する場合は、実際にすべての整数に追加「L」ここ

チェックを見つけながら

In [52]: a = 1l 

In [53]: print a 
1 

In [54]: type(a) 
Out[54]: long 

In [58]: repr(a) 
Out[58]: '1L' 

In [55]: s = [] 

In [56]: s.append(a) 

In [57]: s 
Out[57]: [1L] 

ためmysql他のデータベースは整数値を長く格納します。

+0

はい、リストをループして値を印刷したあと、実際には印刷されず、タイプが長いので、意味があります。私はあなたもそれがなぜそうしているのか答えたと思います。だから感謝します。 – user20408

+0

@ user20408この回答が役に立つとわかっていれば、正しく収集してください。 –

+0

私はすぐにそれを受け入れるための十分なポイントがありませんでした。ありがとう – user20408

関連する問題