Home > database >  Python list iterate not working as expected
Python list iterate not working as expected

Time:05-30

I have a file called list.txt:

['d1','d2','d3']

I want to loop through all the items in the list. Here is the code:

deviceList = open("list.txt", "r")
deviceList = deviceList.read()
for i in deviceList:
    print(i)

Here the issue is that, when I run the code, it will split all the characters:

% python3 run.py
[
'
d
1
'
,
'
d
2
'
,
'
d
3
'
]

It's like all the items have been considered as 1 string? I think needs to be parsed? Please let me know what am I missing..

CodePudding user response:

This isn't the cleanest solution, but it will do if your .txt file is always just in the "[x,y,z]" format.

deviceList = open("list.txt", "r")

deviceList = deviceList[1:-1]
deviceList = deviceList.split(",")

for i in deviceList:
    print(i)

This takes your string, strips the "[" and "]", and then separates the entire string between the commas and turns that into a list. As other users have suggested, there are probably better ways to store this list than a text file as it is, but this solution will do exactly what you are asking. Hope this helps!

CodePudding user response:

Simply because you do not have a list, you are reading a pure text...

I suggest writing the list without the [] so you can use the split() function.

Write the file like this: d1;d2;d3

and use this script to obtain a list

f = open("filename", 'r')
line = f.readlines()
f.close()
list = line.split(";")

if you need the [] in the file, simply add a strip() function like this

f = open("filename", 'r')
line = f.readlines()
f.close()
strip = line.strip("[]")
list = strip.split(";")

should work the same

  • Related