我是python的新手,我有一个带有嵌套列表的列表,并且在其中包含如下所示的元组
[('dad', 'mom', 'test1.txt')]
[('brother', 'sister', 'test2.txt')]
[('uncle', 'aunty', 'test3.txt')]
[('grandpa', 'grandma', 'test4.txt')]
我想一次访问一个列表,例如,我从第一个列表索引[2] 中打开test1.txt文件,并且如果字符串'dad'和'mom如果存在“兄弟”和“姐妹” ,则存在'然后过滤文件并同样读取text2.txt文件。
我有以下代码:
for data in list:
file= data[2]
text_file= open(file,'r').readlines()
if data[0], data[1] in text_file:
#do something..
上面的代码没有按照要求为我提供适当的输出。有人可以用这种方法帮助我吗?
谢谢!
答案 0 :(得分:1)
这是我的方法:
lis=[[('dad', 'mom', 'test1.txt')],
[('brother', 'sister', 'test2.txt')],
[('uncle', 'aunty', 'test3.txt')],
[('grandpa', 'grandma', 'test4.txt')]]
for i in range(len(lis)):
for j in lis[j]:
f = open(i[2])
lines = f.read()
if i[0] in lines and i[1] in lines:
#do sth
我已经迭代了length of the list: len(lis)
的范围中的列表的元素。这样j
就可以得到值0, 1, 2, 3
。然后,我使用了for loop
来遍历列表中的元素。因此,j
将lis
的元素值假定为lis[0], lis[1], lis[2], lis[3]
。
现在j
具有列表元素的值,我们可以使用i[(integer)]
并访问列表元素的元素,即"dad", "mom", "test1.txt"
等。
因此,我们可以将条件应用于i[0] or i[1]
等。
例如:
if i[0] == "dad":
print(something)
希望这对您有帮助!
答案 1 :(得分:0)
由于您读取了4次正确的文件名,因此不清楚您出了什么问题
我想如果使用break语句找到要查找的内容,则必须退出for循环。
答案 2 :(得分:0)
尽量不要使用诸如list
的关键字
L=[[('dad', 'mom', 'test1.txt')],
[('brother', 'sister', 'test2.txt')],
[('uncle', 'aunty', 'test3.txt')],
[('grandpa', 'grandma', 'test4.txt')]]
for data in L:
f=data[0][2]
file1=open(f,"r")
text_file=file1.read()
if(data[0][0] and data[0][1] in text_file):
#do something
答案 3 :(得分:0)
lis=[[('dad', 'mom', 'test1.txt')],
[('brother', 'sister', 'test2.txt')],
[('uncle', 'aunty', 'test3.txt')],
[('grandpa', 'grandma', 'test4.txt')]]
for i in lis:
data=i[0][2]
f=open(data,'r')
file=f.read()
if (i[0][0] and i[0][1])in file:
pass