博客
关于我
python 读取txt文件时split()函数的妙用
阅读量:320 次
发布时间:2019-03-04

本文共 1849 字,大约阅读时间需要 6 分钟。

不知道大家有没有过需要从txt文件中读取含有多行多列的数据的经历,当我们读入数据时,数据会以string的形式被读入,然而如何进行数据类型转换就成了大的问题。这里介绍一种最简单的方式和容易产生的错误使用方法。

txt测试文件中的数据如下:

测试文件数据
我们使用如下代码读取文件,使用readlines()一次性将所有数据全部读取。

with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:    all_data = f.readlines()    print(all_data)# ['6.317438621610765E-05  6.123920173773844E-05  0.00010382572761752979\n', '0.00010819194873178063  8.848784016828921E-05  0.0002043378699454479\n', '9.79660835582763E-05  9.750829986943346E-05  0.00021506758227284687']

我们不难发现这时我们的所有数据都被读入了同一行,但是内部有三个单引号括起来的部分,与我们测试数据中的三行吻合。我们也可以看到,我们需要将这些数据分成单独的string,然后我们就可以使用例如float关键字对这些数据进行类型转换。我们看到数据之间是通过空格来分开的。我们第一时间想到我们应该使用.split(" ")方法以空格将数据分开。我们尝试以下代码:

with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:    all_data = f.readlines()    all_data = all_data[0].split(" ")    print(all_data)# ['6.317438621610765E-05', '', '6.123920173773844E-05', '', '0.00010382572761752979\n']

首先我们需要选取第一行,使用all_data[0],然后在使用split(" ")函数分开他们。我们可以达到了目标,但是我们同时引入了""空字符串项和末尾处\n的隐患,很是棘手。这么做我们就进入了误区。正确地做法如下:

with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:    all_data = f.readlines()    all_data = all_data[0].split()    print(all_data)# ['6.317438621610765E-05', '6.123920173773844E-05', '0.00010382572761752979']

我们使用split()函数时不添加任何参数,这样就一次性去掉了""空字符串项和末尾处\n的隐患还同时分开了各个字符串。如果需要输出多行的结果,我们可以预先定义一个数组,用来存放我们的数据,完整代码如下:(所有的数据以后均可以如此读入)

import matplotlib.pyplot as pltimport numpy as nparray = np.zeros((3, 3))with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:    all_data = f.readlines()    for i, line in enumerate(all_data):        numbers = line.split()        for j, element in enumerate(numbers):            array[i, j] = float(element)print(array)# [[6.31743862e-05 6.12392017e-05 1.03825728e-04]#  [1.08191949e-04 8.84878402e-05 2.04337870e-04]#  [9.79660836e-05 9.75082999e-05 2.15067582e-04]]

如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

转载地址:http://umuh.baihongyu.com/

你可能感兴趣的文章
vuex modules
查看>>
Java基础题:小根堆为8,15,10,21,34,16,12,删除关键字8之后需重建堆,需要的比较次数为?
查看>>
phthon基本语法——温习
查看>>
sleep、wait、yield、join——简介
查看>>
web项目配置
查看>>
c语言(基本数据类型)实参与形参传值 用汇编理解
查看>>
基于单片机可控音乐流水灯控制设计-全套资料
查看>>
基于单片机简易信号误差分析设计-全套资料
查看>>
基于单片机简易脉搏测量仪系统设计-毕设课设资料
查看>>
并发框架下的“基础类型”——浅析基本类型、ThreadLocal、原子类的线程安全机制
查看>>
VHDL代码风格
查看>>
Object Clone
查看>>
Javascript中String支持使用正则表达式的四种方法
查看>>
【IoT】蓝牙BLE基础:CC254x通信系列之模拟SPI协议
查看>>
【IoT】TI BLE CC2541 串口控制蓝牙详解
查看>>
【产品】项目管理的五个过程和九大知识领域之二
查看>>
【Tool】如何使用 Uniflash 烧写 WIFI 芯片 CC3200
查看>>
copy_{to, from}_user()的思考
查看>>
Web前端安全策略之CSRF的攻击与防御
查看>>
纯客户端页面关键字搜索高亮jQuery插件
查看>>