将值附加到python列表时,我遇到了奇怪的行为。我使用openpyxl读取多个excel文件的值,做一些数学运算并将它们写入新的excel文件。但是,当循环遍历标题列中的行并将值附加到列表时,列表的最终结果是单元格的值加上“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 :(得分:1)
因为print
返回人类可读的格式
如果您在声明中使用repr
代替print
print val
你实际上找到了' 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
和其他数据库存储整数值。