[英]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.