How to read just lists in a text file in Python? -


i need read text file this

bruce chung bruce@outlook.com 8893243 costarricense divisa del informe colones ['nokia', 5277100.0, 'china'] ['samsung', 10554200.0, 'turkey'] ['apple', 52771000.0, 'argentina'] 

but need read lists inside file , assign them new variable.

i've used this

data =[ast.literal_eval(x) x in open("test.txt")] registros = data 

and worked before until added information of user below.

is there way read lists in text?

you can use str.startswith() check if string starts '[' , , use ast.literal_eval() if true. example -

with open("test.txt") f:     registros = [ast.literal_eval(x) x in f if x.startswith('[')] 

demo -

>>> s = """bruce ... chung ... bruce@outlook.com ... 8893243 ... costarricense ... divisa del informe colones ... ['nokia', 5277100.0, 'china'] ... ['samsung', 10554200.0, 'turkey'] ... ['apple', 52771000.0, 'argentina']""".splitlines() >>> import ast >>> registros = [ast.literal_eval(x) x in s if x.startswith('[')] >>> registros [['nokia', 5277100.0, 'china'], ['samsung', 10554200.0, 'turkey'], ['apple', 52771000.0, 'argentina']] 

for updated requirements in comments -

how can read user info , assign variable using method?

assuming line not list, part of user info

you can use simple loop, keep appending variable if line not start '[' , , if does, use ast.literal_eval() on it, , append registros list.

example -

import ast open("test.txt") f:     user_info = ''     registros = []     line in f:         if line.startswith('['):             registros.append(ast.literal_eval(line))         else:             user_info += line 

if user_info 6 lines (as given in comments) , can use -

import ast open("test.txt") f:     user_info = ''     i,line in enumerate(f):         user_info += line         if  i==5:             break     registros = [ast.literal_eval(x) x in f if x.startswith('[')] 

Comments

Popular posts from this blog

html - Outlook 2010 Anchor (url/address/link) -

javascript - Why does running this loop 9 times take 100x longer than running it 8 times? -

Getting gateway time-out Rails app with Nginx + Puma running on Digital Ocean -