欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中讀取txt文件時(shí)split()函數(shù)的妙用

 更新時(shí)間:2022年11月03日 11:22:07   作者:勤奮的大熊貓  
這篇文章主要介紹了python中讀取txt文件時(shí)split()函數(shù)的妙用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

不知道大家有沒有過需要從txt文件中讀取含有多行多列的數(shù)據(jù)的經(jīng)歷,當(dāng)我們讀入數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)以string的形式被讀入,然而如何進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換就成了大的問題。

這里介紹一種最簡(jiǎn)單的方式和容易產(chǎn)生的錯(cuò)誤使用方法。

txt測(cè)試文件中的數(shù)據(jù)如下

我們使用如下代碼讀取文件,使用readlines()一次性將所有數(shù)據(jù)全部讀取。

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

我們不難發(fā)現(xiàn)這時(shí)我們的所有數(shù)據(jù)都被讀入了同一行,但是內(nèi)部有三個(gè)單引號(hào)括起來的部分,與我們測(cè)試數(shù)據(jù)中的三行吻合。

我們也可以看到,我們需要將這些數(shù)據(jù)分成單獨(dú)的string,然后我們就可以使用例如float關(guān)鍵字對(duì)這些數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換。

我們看到數(shù)據(jù)之間是通過空格來分開的。我們第一時(shí)間想到我們應(yīng)該使用.split(" ")方法以空格將數(shù)據(jù)分開。

我們嘗試以下代碼

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(" ")函數(shù)分開它們。

我們成功達(dá)到了目的,但是我們同時(shí)引入了""空字符串項(xiàng)和末尾處\n的隱患,很是棘手。

這么做我們就進(jìn)入了誤區(qū)。

正確地做法如下

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()函數(shù)時(shí)不添加任何參數(shù),這樣就一次性去掉了""空字符串項(xiàng)和末尾處\n的隱患還同時(shí)分開了各個(gè)字符串。

如果需要輸出多行的結(jié)果,我們可以預(yù)先定義一個(gè)數(shù)組,用來存放我們的數(shù)據(jù),完整代碼如下:(以后所有的多行多列數(shù)據(jù)均可以如此讀入)

方法一:將數(shù)據(jù)以二維列表形式讀入

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

方法二:將數(shù)據(jù)以二維數(shù)組形式讀入

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論