首页 > 编程语言 >简单介绍python中读取txt文件时split()函数的妙用

简单介绍python中读取txt文件时split()函数的妙用

时间:2022-12-24 12:31:08浏览次数:48  
标签:05 python readlines split 读入 txt data

这篇文章主要介绍了python中读取txt文件时split()函数的妙用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

不知道大家有没有过需要从txt文件中读取含有多行多列的数据的经历,当我们读入数据时,数据会以string的形式被读入,然而如何进行数据类型转换就成了大的问题。

这里介绍一种最简单的方式和容易产生的错误使用方法。

txt测试文件中的数据如下

简单介绍python中读取txt文件时split()函数的妙用_数据

我们使用如下代码读取文件,使用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的隐患还同时分开了各个字符串。

如果需要输出多行的结果,我们可以预先定义一个数组,用来存放我们的数据,完整代码如下:(以后所有的多行多列数据均可以如此读入)

方法一:将数据以二维列表形式读入

array2d = []
with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f:
all_data = f.readlines()
for i in range(len(all_data)):
temp_list = []
for element in all_data[i].split():
temp_list.append(float(element))
array2d.append(temp_list)

print(array2d)
#[[6.31743862e-05, 6.12392017e-05, 0.000103825728],
# [0.000108191949, 8.84878402e-05, 0.00020433787],
# [9.79660836e-05, 9.75082999e-05, 0.000215067582]]

方法二:将数据以二维数组形式读入

import numpy as np

array = 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]]


标签:05,python,readlines,split,读入,txt,data
From: https://blog.51cto.com/u_12148962/5967118

相关文章

  • python使用request发送x-www-form-urlencoded类型的数据
    场景:当接口的Content-Type类型是x-www-form-urlencoded,使用json类型去请求,无法请求成功解决方法:使用parse.urlencode()方法对json数据进行解码处理,再传入。实例代码如下......
  • Python学习笔记--从继承开始继续
    继承的基础语法单继承:多继承:一个子类继承多个父类pass关键字补全语法注意事项:复写和使用父类成员复写父类成员也就是相当于Java中的方法重写调用父类成员......
  • Python学习笔记--第二阶段啦
    初识对象示例:类的成员方法上图中的self必须填写!!!示例:类和对象有c和c++语言基础的话,就会发现其实是一样的道理,只是实现代码有差异构造方法(init)示例:注意:......
  • Python-基于flask的接口框架
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • python标准化日期转换
    将.号\号-号的日期格式,全部统一成一种方式#coding:utf-8importre#目标:2021-05-28content="""白日依2021/05/26山尽,黄河入2021.05.27海流。欲穷05-28-2020千里......
  • Python爬虫——上海市链家二手房数据爬取及可视化分析
    一、选题的背景本次项目选择了中国的一线城市——上海市,通过了解上海市二手房的情况,可以帮助人们在购房、出租等方面做出更明智的决策。可以帮助人们了解上海市经济的......
  • 树莓派 python 直接控制sg90舵机
     必须是sg90s金属齿轮的 塑料sg90不知道为什么不行 importRPi.GPIOasGPIOimporttimeservoPIN=17#GPIO口GPIO.setmode(GPIO.BCM)GPIO.setup(servoPIN,......
  • Python网络爬虫—对京东口红销售的数据分析
    一、选题的背景 对电商来说,抓取某些数据,再进行分析,可以有效地反映出数据在某个区间内变化情况。数据受某些因素而发生巨大的影响,也可以借助分析的数据来规划相关项目的后......
  • 快速排序 python
    步骤在一序列中定一个轴为基轴(通常为了方便定最左那个数),定序列左右指针,右指针开始扫描,比基轴大则指针继续往前扫,当扫到比基轴小时,把这个数放到最左边,再开始扫左......
  • 力扣26(java&python)-删除有序数组中的重复项(简单)
    题目:给你一个升序排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。由于在某些语言中......