第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從文件中讀取值,自動(dòng)創(chuàng)建變量來(lái)存儲(chǔ)它們

從文件中讀取值,自動(dòng)創(chuàng)建變量來(lái)存儲(chǔ)它們

PIPIONE 2024-01-24 15:51:58
我有一個(gè)文本文件,params.txt其格式如下(忽略顏色格式,這是一個(gè)純文本文件,而不是 python 代碼):Lx = 512 Ly = 512g = 400================ Dissipation =====================nupower = 8 nu = 0alphapower = -0 alpha = 0================ Timestepping =========================SOMEFLAG = 1SOMEOTHERFLAG = 4dt = 2e-05[...and so on]即變量按其值分隔=,值是整數(shù)、浮點(diǎn)數(shù)和科學(xué)記數(shù)法的混合,有時(shí)一行上有兩個(gè)變量/值對(duì),由一個(gè)空格分隔,并且有以下形式的標(biāo)題================ HeadingToBeDiscarded ================在 python 中,如何讀取文本文件,并在 python 腳本中自動(dòng)創(chuàng)建相同的變量并為它們分配與文件中相同的值?文件的格式每次都是相同的,因此可以進(jìn)行暴力破解,但我確信有一個(gè)優(yōu)雅的 python/regex 解決方案(但我是 python 新手,幾乎沒(méi)有進(jìn)行過(guò)正則表達(dá)式?。?
查看完整描述

5 回答

?
侃侃無(wú)極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

現(xiàn)在,如果您想(硬編碼?).txt文件中的數(shù)據(jù)到.py文件,您應(yīng)該使用如下內(nèi)容:


temp_list = []

with open("params.txt") as file:

    while True:

        line = file.readline()

        line = line.strip()

        value = line.split(' ')

        for i, word in enumerate(value):

            if word == '=':

                var = f'{value[i-1]} = {value[i+1]}'

                temp_list.append(var)

        if not line:

            break


with open('sets.py', 'w') as f:

    f.write('\n'.join(temp_list))

這將創(chuàng)建一個(gè)名為sets.py(您可以更改名稱)的新 python 文件并將所有值從文本文件存儲(chǔ)到 .py 文件?,F(xiàn)在,要使用這些值,請(qǐng)首先確保它們sets.py與主 python scipt 位于同一目錄中,然后from sets import *現(xiàn)在只需鍵入其名稱即可訪問(wèn)任何這些值,它將被識(shí)別。試試看


查看完整回答
反對(duì) 回復(fù) 2024-01-24
?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

我認(rèn)為這應(yīng)該可以用字典來(lái)實(shí)現(xiàn)。


像這樣的東西:


def getVariables():

with open("filename.txt",'r') as file:

    variables = {}

    while True:

        line = file.readline()

        line = line.strip()

        value = line.split(' ')

        for i, word in enumerate(value):

            if word == '=':

                variables[str(value[i-1])] = value[i+1]

        if not line:

            break

return variables

這會(huì)留下字典形式的輸出,其中鍵為:變量名稱,值為:變量本身。像這樣:


變量= {'Lx':'512','Ly':'512','nupower':'8','nu':'0'}


我不知道如何實(shí)現(xiàn)某種檢測(cè)它是 int 還是 float 的方法......


查看完整回答
反對(duì) 回復(fù) 2024-01-24
?
守候你守候我

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊

改進(jìn)了答案之一的腳本,可以檢測(cè) int、float 和 str


def getVariables():

    with open("params.txt") as file:

        variables = {}

        while True:

            line = file.readline()

            line = line.strip()

            value = line.split(' ')

            for i, word in enumerate(value):

                if word == '=':

                    try:

                        variables[str(value[i-1])] = int(value[i+1])

                    except ValueError:

                        try:

                            variables[str(value[i-1])] = float(value[i+1])

                        except ValueError:

                            variables[str(value[i-1])] = (value[i+1])

            if not line:

                break

    return variables


查看完整回答
反對(duì) 回復(fù) 2024-01-24
?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊

對(duì)于未來(lái)的讀者,另一種解決方案是使用代碼exec()運(yùn)行適當(dāng)切碎的字符串params.txt,以給定的值分配變量:


with open('params.txt', 'r') as infile:

for line in infile:

? ? splitline = line.strip().split(' ')

? ? for i, word in enumerate(splitline):

? ? ? ? if word == '=':

? ? ? ? ? ? # DANGER! Don't use this unless you completely trust the content of params.txt!

? ? ? ? ? ? exec(splitline[i-1] + splitline[i] + splitline[i+1])

這避免了按照 Matiiss 的解決方案解析文件、創(chuàng)建字典、打印 .py 文件,然后讀取 .py 文件。


查看完整回答
反對(duì) 回復(fù) 2024-01-24
?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

我的建議是,你可能不應(yīng)該以這種方式存儲(chǔ)它。

如果甚至不考慮人類閱讀,請(qǐng)使用 pickle 來(lái)存儲(chǔ) python 對(duì)象。

如果它應(yīng)該是人類可讀/可編輯的,我會(huì)建議 csv 文件或類似的文件


查看完整回答
反對(duì) 回復(fù) 2024-01-24
  • 5 回答
  • 0 關(guān)注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)