[英]iterate one row at a time of a 2D numpy array python
我有如下所示的數組。
[['dad', 'mom', 'test1.txt']
['brother', 'sister', 'test2.txt']
['uncle', 'aunty', 'test3.txt']
['grandpa', 'grandma', 'test4.txt']]
例如,我想迭代。 我從第一個第一個元素打開 test1.txt 文件,如果拆分索引中存在字符串“爸爸”和“媽媽” ,則過濾文件並讀取 append 的年齡。 同樣對於 text2.txt 文件,如果存在'brother' 和 'sister'然后讀取並過濾,我希望它在嵌套列表中不一樣。
我有類似下面的東西
lst_age=[]
for data in ele_arry:
file = data[2]
stg1 = data[1]
stg2 = data[0]
files = open(file, 'r').read()
for line in files:
formattedline = line.split(' ')
if formattedline[1] == stg1 and formattedline[2] == stg2:
lst_age.append(formattedline[3])
逐行分割后的文本文件如下所示:
['1','dad', 'mom', '27']
['2','dad', 'mom', '34']
['3','daughter', 'mom', '42']
['4','dad', 'son', '21']
['5','daughter', 'son', '22']
我需要的 output 用於lst_age變量
['27', '34'] #for file text1.txt
['28', '43' ] #for file text2.txt
#similarly for all the 4 files
但現在我將所有文件中的年齡元素合並為一個。
['27', '34','28', '43']
這沒有在上面提到所需的 output。 有人可以幫我解決這個問題嗎?
謝謝!
發生這種情況是因為使用files = open(file, 'r').read()
您將返回文件 object 而不是可迭代列表。 您可以使用readlines()
返回包含文件行的列表:
ele_arry =[['dad', 'mom', 'C:\\Users\\Miguel\\Desktop\\test1.txt'],
['brother', 'sister', 'C:\\Users\\Miguel\\Desktop\\test2.txt'],
['uncle', 'aunty', 'C:\\Users\\Miguel\\Desktop\\test3.txt'],
['grandpa', 'grandma', 'C:\\Users\\Miguel\\Desktop\\test4.txt']]
lst_age=[]
for data in ele_arry:
file = data[2]
stg2 = data[1]
stg1 = data[0]
files = open(file, 'r').readlines()
lst_agefile=[]
for line in files:
formattedline = line.split(' ')
if formattedline[1] == stg1 and formattedline[2] == stg2:
lst_agefile.append(formattedline[3].replace('\n',''))
lst_age.append(lst_agefile)
for i in lst_age:
print(i)
Output:
['27', '34']
['28', '43' ]
單線方式:
lst_age=[[line.split(' ')[3].replace('\n','') for line in open(data[2], 'r').readlines() if line.split(' ')[1] == data[0] and line.split(' ')[2] == data[1]] for data in ele_arry]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.