添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

不知道大家有没有过需要从 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]]

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

不知道大家有没有过需要从txt文件中读取含有多行多列的数据的经历,当我们读入数据时,数据会以string的形式被读入,然而如何进行数据转换就成了大的问题。这里介绍一种最简单的方式和容易产生的错误使用方法。txt测试文件中的数据如下:我们使用如下代码读取文件,使用readlines()一次性将所有数据全部读取。with open(r"C:\Users\15025\Desktop\debug1.txt", "r") as f: all_data = f.readlines() print
实际中,很多数据都是存为txt文件、csv文件等,但是在程序中处理的候numpy数组或列表是最方便的。本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法。 1 将txt文件读为list并转化为numpy数组 import numpy as np file = open('filename.txt') val_list = file.readlines() lists =[] for string in val_list: string = string.split('\t',3) lists.append(string[0:2]) #只取每个string的前两项,得到
之前我们使用到的数据都是自己在控制台进行定义的,在Python处理数据,很多情况下要多一些文件中的数据进行整理,所以就很有必要对一个文件进行读取,下面我们就看看如果使用Python读取一个文件。 首先准备一个文件,等会我们会对这个文件进行读取,这里我把文件放到D:\python\file下,文件名为:sketch.txt文件的内容如下: Man: Is this the righ
split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,这些子串会被保存到列表中(不包含分隔符),作为方法的返回值反馈回来。该方法的基本语法格式如下: str.split(sep,maxsplit) 此方法中各部分参数的含义分别是: str:表示要进行分割的字符串; sep:用于指定分隔符,可以包含多个字符。此参数默认为 None,表示所有空字符,包括空格、换行符“\n”、制表符“\t”等。 maxsplit:可选参数,用于指定分割的次数,最后列表中子串的个数最多为 maxsplit+1。如
二、读取txt文件,最终输出为列表: [['123456', '123455'], ['1121121', '33333'], ['4444444', '55555']] 应用:... 1、如下图所示:f.readline()是只能读取一行,空行也会当做一行读取。并且,读取一行之后还会打印一个空行 [root@node6 ~]# cat open1.sh #!/usr/bin/python3 with open("/root/cs.txt", 'r',) as f: b = f.readline() c = f.readline() d = f.readl file.seek(0)是重新定位在文件的第0位及开始位置 file = open("test.txt","rw") #注意这行的变动 file.seek(3) #定位到第3个 for i in file: print i #现在到了最后一位了 for i in file: print i #不会显示任何结果
String_0 = "bbb/QJ6252630247.jpg" a = String_0.split("/")[-1] b = String_0.split("/")[0] print(a) print(b) # 结果: # QJ6252630247.jpg # bbb str1= 'S1700028Y.svs' c = str1.split('.')[0] d = str1.split('.')[1] e = str1.split('.')[-1] print(c) print(d) print.
虽然zip命令能够很好地将数据压缩和归档进单个文件,但它不是Unix和Linux中的标准归档工具。目前,Unix和Linux上最广泛使用的归档工具是tar命令。 tar命令最开始是用来将文件写到磁带设备上归档的,然而它也能把输出写到文件里,这种用法在Linux上已经普遍用来归档数据了。 通过制定分隔符对字符串进行切片,如果参数num有指定值,则分隔符num+1个子字符串。 str.split(str="",num=string.count(str)). str:分隔符,默认为所有空字符,包括空格、换行(\n)、制表符(\t)等。 num:分割次数。默认为-1,即分割所有。 返回值:分割后的字符串列表。