我的excel文件结构:

学习了xlrd如何操作excel文件、python读写txt文件、jason.dumps()转换dict为string类型之后,进行了第一次尝试。

第一次尝试:

import xlrd

import json

data = xlrd.open_workbook('test.xlsx')#打开excel文件

table = data.sheet_by_name(u'Sheet1')#通过名称获取excel表

nrows = table.nrows

final_obj={}

for i in range(nrows):

cur_row = table.row_values(i)

first = str(cur_row[0])

if first:

final_obj[first] = []

for j in range(1,len(cur_row)):

if cur_row[j]:

final_obj[first].append(cur_row[j])

final_str = json.dumps(final_obj)

print(final_str)

file = open('test.txt', 'w')

file.write(final_str)

file.close()

通过第一次尝试的代码得到了上面的内容(内容其实已经保存在txt里面,打印在屏幕上是为了方便查看结果),得出如下结论:

数字的字面类型与excel里面的类型不一致;

没有按照顺序存储数据,这主要是dict类型不分先后的原因,对于数据影响不大,但可读性较差。

接下来主要解决问题1:

import xlrd

import json

data = xlrd.open_workbook('test.xlsx')#打开excel文件

table = data.sheet_by_name(u'Sheet1')#通过名称获取excel表

nrows = table.nrows

final_obj={}

for i in range(nrows):

cur_row = table.row_values(i)

#我已经通过pirnt(cur_row[0])得知excel中的数字获得后为浮点型,判断它是否为浮点型且能够整除

if type(cur_row[0]) == type(1.1) and cur_row[0]%1 == 0:

first = str(int(cur_row[0]))

else:

first = str(cur_row[0])

if first:

final_obj[first] = []

for j in range(1,len(cur_row)):

if cur_row[j]:

if type(cur_row[j]) == type(1.1) and cur_row[j]%1 == 0:

cur_value = str(int(cur_row[j]))

else:

cur_value = str(cur_row[j])

final_obj[first].append(cur_value)

final_str = json.dumps(final_obj)

print(final_str)

file = open('test.txt', 'w')

file.write(final_str)

file.close()

这次得到了相对正确的数字,当我修改了我的excel文件内容时:

根据测试,判断我对excel中的获得的浮点数的转换基本是对的,但也不能保证完全正确。

上面的代码每次遇到这种数字都需要做判断,我希望能够定义一个函数,可以重复用于转换数据

import xlrd

import json

data = xlrd.open_workbook('test.xlsx')#打开excel文件

table = data.sheet_by_name(u'Sheet1')#通过名称获取excel表

nrows = table.nrows

final_obj={}

for i in range(nrows):

cur_row = table.row_values(i)

first = toIntString(cur_row[0])

if first:

final_obj[first] = []

for j in range(1,len(cur_row)):

if cur_row[j]:

final_obj[first].append(toIntString(cur_row[j]))

final_str = json.dumps(final_obj)

print(final_str)

file = open('test.txt', 'w')

file.write(final_str)

file.close()

def toIntString(value):

result = ""

if type(value) == type(1.1) and value%1 == 0:

result = str(int(value))

else:

result = str(value)

return result

显然是定义函数的代码写在了调用函数部分的内容下面造成的,然而人家JavaScript是可以这么干的,不爽!

import xlrd

import json

def toIntString(value):

result = ""

if type(value) == type(1.1) and value%1 == 0:

result = str(int(value))

else:

result = str(value)

return result

data = xlrd.open_workbook('test.xlsx')#打开excel文件

table = data.sheet_by_name(u'Sheet1')#通过名称获取excel表

nrows = table.nrows

final_obj={}

for i in range(nrows):

cur_row = table.row_values(i)

first = toIntString(cur_row[0])

if first:

final_obj[first] = []

for j in range(1,len(cur_row)):

if cur_row[j]:

final_obj[first].append(toIntString(cur_row[j]))

final_str = json.dumps(final_obj)

print(final_str)

file = open('test.txt', 'w')

file.write(final_str)

file.close()

成功!

最后的疑问:

关于如何判断字符串"1.0"或"abc"(二者均有可能出现)为整数我没有找到合适的解决方法,难道只能用try…except…来解决int(str)造成的异常么?

结果应该为0.2:

一个不和谐的方法eval(),本来打算用来转换数字的:

python里面的除法总是保留1位小数:

参考:

https://my.oschina.net/u/1165991/blog/742587

http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html【python操作Excel读写--使用xlrd】

http://blog.sina.com.cn/s/blog_4ddef8f80102v8af.html【JSON: Python Objects与String之间转换】

python读取txt文件并写入excel-Python读excel生成数据存入txt文件相关推荐

  1. 使用python读取网络视频流或者本地视频进行RTMP流的生成,并对视频源的每一帧做剪切处理

    python读取网络视频流或者本地视频进行RTMP流的生成 想要获得RTMP推流的功能其实是可以用ffmpeg+ffserver通过命令行方式实现的,但是我为了对原视频流的帧做剪切处理,所以使用pyt ...

  2. Python读取xlsx表格并转换成Python列表

    Python读取xlsx表格并转换成Python列表 参考链接https://www.cnblogs.com/ilovepython/p/11068841.html import xlrd from ...

  3. python使用fpdf生成数据报告pdf文件

    python使用fpdf生成数据报告pdf文件 目录 python使用fpdf生成数据报告pdf文件 # 报告生成整体代码

  4. 更改excel表格行数太多_excel表格数据行数太多-EXCEL显示太多行数据,导致文件过大,如何解决!...

    EXCEL显示太多行数据,导致文件过大,如何解决! 可以设置打印区 1.电脑打Excel表格. 2.打开Excel表格后,选中要打印的区后点入页面布局. 3.点击进入页面布局后,点击打印区域中的设置打 ...

  5. DICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”

    背景: 续上篇,继续介绍如何将多幅JPG图像数据存入DCM文件.即将有损压缩数据直接写入DCM文件,存储为Multi-frame形式. 多幅JPG图像数据存入DCM文件: 为了避免引起歧义,这里着重说 ...

  6. python写入excel文件追加写入_Python读写/追加excel文件Demo

    这篇文章主要介绍了关于Python读写/追加excel文件Demo,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 python操作excel的三个工具包如下,注意,只能操作.xls,不 ...

  7. python读取excelsheet-一文看懂用Python读取Excel数据

    原标题:一文看懂用Python读取Excel数据 导读:现有的Excel分为两种格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上). Python处理Excel文件主要 ...

  8. python读取表格报错:xlrd.biffh.XLRDError:Excel xlsx file;not support

    python读取表格报错 当你间歇性踌躇满志的打开pycharm,看了一篇python+unittest+request接口自动化测试框架,你觉得有必要站在巨人的肩膀上眺望一下远方,于是你按步骤走到了 ...

  9. python读取csv求平均数_利用Python读取CSV文件并计算某一列的均值和方差

    近日需要对excel的csv文件进行处理,求取某银行历年股价的均值方差等一系列数据 文件的构成很简单,部分如下所示 总共有接近七千行数据,主要的工作就是将其中的股价数据提取出来,放入一个数组之中,然后 ...

最新文章

  1. Debian 3.1 (Sarge) 正式发布,Knoppix也升级到最后一个单CD版3.9
  2. C语言 strcat_s 函数 - C语言零基础入门教程
  3. c ++atoi函数_atoi()函数以及C ++中的示例
  4. ReportViewer教程(15)-矩阵报表-1
  5. Firefox改变查看页面源代码的程序
  6. C语言实验六作业,C语言程序设计作业——实验六.doc
  7. JS 页面繁简字转换
  8. html 输出helloworld,以及基本结构详解
  9. Android 面试自我介绍
  10. 【回眸】安装Hightec后如何导入源码及相关环境配置
  11. 面向开发的内存调试神器,如何使用ASAN检测内存泄漏、堆栈溢出等问题
  12. 为了研究而玩:游戏分析的方法
  13. win7\win10加域的电脑不输入密码直接登录登录电脑桌面
  14. 星瑞格数据库安全审计系统 —— Sinoregal dbAudit
  15. 仿百度html页面,HTML实战篇:html仿百度首页
  16. 笔记本电脑连接显示器如何让笔记本电脑单纯作为一台主机进行使用/笔记本连接显示器以后只需要显示器进行显示的操作! 2021/1/16
  17. 专访阿里金融云徐敏:为普惠金融地提供技术原力
  18. gstreamer之G_DEFINE_TYPE
  19. 英特尔第十代处理器为什么不支持win7_10代处理器能装win7吗(9代cpu完美支持win7)...
  20. 如何采集 APP 上的数据

热门文章

  1. matlab 三维饼图,重新学习MATLAB——作图技法及3D可视化
  2. local_response_normalization 和 batch_normalization
  3. 一种神经元探索系统方法及装置
  4. Angular-Ui-Router+ocLazyLoad动态加载脚本
  5. shell date 格式化
  6. docker命令大全
  7. openshift harp.js heroku react-router 4
  8. 正則表達式基本元字符集及其含义(上)
  9. 如何保持两个文件的手动同步。
  10. 请问anroid怎么播放aac文件。