簡體   English   中英

Python,從txt文件中讀取並拆分數據

[英]Python, Read from txt file and split data

這是我正在做的一個編程練習。

所以我有這個文本文件(.txt),其中的行看起來像這樣:

'X', ['X', 'a', ... , 'b'], 'There should be 5 of X in this vector'

我想要的是定義一個函數,將這些數據逐行讀入 python 並將每一行作為三個變量發送回,對於上面的這個特定行,我希望函數發送回:

var = 'X'
vek = ['X', 'a', ... , 'b']
strng = 'There should be 5 of X in this vector'

這是我有多遠

def reading(file, linenumber):

    text = open(file, 'r')
    data = text.readlines()


    return something
    text.close() 

當我將它寫入 python 時,我想在一個代碼中使用這個返回的數據“計算變量 (var) 在向量/列表 (vek) 中重復的次數,然后打印出該數字以查看它是否符合語句(strng)。我想我可以處理這最后一部分,我只需要一些閱讀和拆分方面的幫助。

另外我想說我對 python 真的很陌生,我在兩周前看到了我的第一個代碼。 然而,我已經完成了 abit MATLAB,所以我熟悉 for、while、if-elif-else 並且我了解一些基本的編程。 我正在使用 2.7 版本。

請對我有一些耐心:)

這一行會將整個文件讀入一個“行”列表(字符串對象)

data = text.readlines()

現在,您需要對每個字符串使用split(',')方法來分割逗號分隔符上的每一行

for line in data:
    l = line.strip().split(',')
    var, vek, strng =  l[0], l[1:-1], l[-1]

這將返回文字字符串,這可能不是您想要的,例如

>>> var
"'@'"
>>> vek
[" ['list element1'", " 'list element2'", "'more list elements1']"]
>>> strg
" 'A string1'"

假設你想返回指定的linenumber從文件,為有效Python對象(例如, vek應該是一個列表,而不是一個字符串,它看起來像一個列表),那么這應該工作:

def reading(path, linenumber):
    with open(path, 'r') as text:
        data = text.readlines()
    if linenumber <= len(data):
        l = data[linenumber-1].strip().split(',')
        # Here i use the map function:
        var, vek, strg = map(eval, [l[0], ','.join(l[1:-1]).strip(), l[-1]])

        # You could do each on its own line, like below:
        #var = eval(l[0])
        #vek = eval(','.join(l[1:-1]).strip()) ## converts this to python list obj.
        #strg = eval(l[-1])
        return var, vek, strg
    else:
        return (None, None, None)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM