解析csv文件时发现会自动将整形数据转为float类型
print (list):
csv文件:
解决方法:应用正则表达式剔除后缀(前期用类型转换,将float类型转为int类型,但是原本float类型的数据也会转换成int,导致数据与原始文件不一致的问题)
#encoding='utf-8'
import xlrd
import csv
import re
def read_xlrd_output_type(excelFile,csvFile):
data = xlrd.open_workbook(excelFile)
table = data.sheet_by_index(0)
rows = table.nrows
cols = table.ncols
list1=[]
for rowNum in range(rows):
for j in range(cols):
value_change=str(table.row_values(rowNum)[j]).replace('\n',' ')
int_change=re.sub('\.0$', '', value_change)
list1.append(int_change)
#print(list1)
csvfile=open(csvFile,mode='a',encoding='gbk',newline='')
writer = csv.writer(csvfile, delimiter='^')
writer.writerow(list1)
list1=[]
csvfile.close()
if __name__ == '__main__':
read_xlrd_output_type(excelFile='1.xlsx',csvFile='2.csv')
print('1 finished')
如果出现有更精确的小数点如:3.00入库变成3.0的情况,可参考:
https://uucode.com/blog/2013/10/22/using-xlrd-and-formatting-excel-numbers/