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

 更新时间:2022年11月03日 11:22:07   作者:勤奋的大熊猫  
这篇文章主要介绍了python中读取txt文件时split()函数的妙用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

不知道大家有没有过需要从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的隐患还同时分开了各个字符串。

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

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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python实现的用户登录系统功能示例

    Python实现的用户登录系统功能示例

    这篇文章主要介绍了Python实现的用户登录系统功能,涉及Python流程控制及字符串判断等相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • 接口自动化多层嵌套json数据处理代码实例

    接口自动化多层嵌套json数据处理代码实例

    这篇文章主要介绍了接口自动化多层嵌套json数据处理代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Python学习之魔法函数(filter,map,reduce)详解

    Python学习之魔法函数(filter,map,reduce)详解

    这篇文章我们将来学习一下,Python中的三个高级函数:filter()、map()、reduce(),这三个函数也被称为魔法函数,感兴趣的小伙伴可以了解一下
    2022-04-04
  • 自然语言处理之文本热词提取(含有《源码》和《数据》)

    自然语言处理之文本热词提取(含有《源码》和《数据》)

    这篇文章主要介绍了自然语言处理之文本热词提取,主要就是通过jieba的posseg模块将一段文字分段并赋予不同字段不同意思,然后通过频率计算出热频词,需要的朋友可以参考下
    2022-05-05
  • Pygame游戏开发之太空射击实战碰撞改进篇

    Pygame游戏开发之太空射击实战碰撞改进篇

    相信大多数8090后都玩过太空射击游戏,在过去游戏不多的年代太空射击自然属于经典好玩的一款了,今天我们来自己动手实现它,在编写学习中回顾过往展望未来,在本课中,我们将讨论如何更改 Pygame 处理精灵之间冲突的方式
    2022-08-08
  • python pandas实现excel转为html格式的方法

    python pandas实现excel转为html格式的方法

    今天小编就为大家分享一篇python pandas实现excel转为html格式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • python 自动轨迹绘制的实例代码

    python 自动轨迹绘制的实例代码

    今天小编就为大家分享一篇python 自动轨迹绘制的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python多次绘制条形图的方法

    python多次绘制条形图的方法

    这篇文章主要为大家详细介绍了python多次绘制条形图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • python3.5基于TCP实现文件传输

    python3.5基于TCP实现文件传输

    这篇文章主要为大家详细介绍了python3.5基于TCP实现文件传输的代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • python内置模块collections知识点总结

    python内置模块collections知识点总结

    这篇文章主要介绍了python内置模块collections知识点总结,有兴趣的朋友们学习下。
    2019-12-12

最新评论