前言:
此时同学们对“python怎么把小数变成整数”大体比较讲究,姐妹们都想要学习一些“python怎么把小数变成整数”的相关知识。那么小编同时在网摘上搜集了一些关于“python怎么把小数变成整数””的相关文章,希望各位老铁们能喜欢,各位老铁们一起来学习一下吧!想让excel数据返回一个字符串字典list,造了一个excel。数据如下:
用代码读取后发现整型和日期变成了小数(123456变成了123456.0,2017/5/20 5:20变成了42875.22222222222):
有个比较简单的解决办法就是在数字和日期的单元格内容前加上一个英文的逗号即可。如果数据比较多,也可以批量加英文逗号的前缀(网上都有方法)。
再次运行代码就正确了:
这种比较适合数据量较少的时候,如果数据量比较多,还是建议通过程序代码判断单元格内容的ctype来解决!
下面是我通过网上找的例子修改的代码。初学python没几天,有不足之处希望留言指正,大家共同学习!
注意:该例子没有对第一行的数据进行处理。第一行数据作为key,其它行作为value,依次返回每行数据。
import xlrdfrom datetime import datetimefrom xlrd import xldate_as_tupledef get_excel_data(file): # 传入文件路径字符串即可,例如:get_excel_data('account.xlsx') workbook = xlrd.open_workbook(file) sheet = workbook.sheets()[0] # 读取第一个sheet nrows = sheet.nrows # 行数 first_row_values = sheet.row_values(0) # 第一行数据 list = [] num = 1 for row_num in range(1, nrows): row_values = sheet.row_values(row_num) if row_values: str_obj = {} for i in range(len(first_row_values)): ctype = sheet.cell(num, i).ctype cell = sheet.cell_value(num, i) if ctype == 2 and cell % 1 == 0.0: # ctype为2且为浮点 cell = int(cell) # 浮点转成整型 cell = str(cell) # 转成整型后再转成字符串,如果想要整型就去掉该行 elif ctype == 3: date = datetime(*xldate_as_tuple(cell, 0)) cell = date.strftime('%Y/%m/%d %H:%M:%S') elif ctype == 4: cell = True if cell == 1 else False str_obj[first_row_values[i]] = cell list.append(str_obj) num = num + 1 return list