2015-09-24 10 views
1

Я хочу напечатать все имена в следующем примере. Имена случайны каждый раз.Python 2.7 print strings

txt = "[something name=\"Paul\" other=\"1/1/1\"][something name=\"James\" other=\"4/3/5\"][something name=\"Victor\" other=\"7/2/6\"][something name=\"Jane\" other=\"4/3/6\"]" 

Я знаю, как напечатать первую из этих названий:

print str(txt[txt.index('[something name=\"')+17:txt.index(' other')-1]) 

, но как я могу печатать все? Мне нужно, чтобы напечатать все имена в новой строке:

Paul 
James 
Victor 
Jane 

ответ

5

Похоже, вы можете использовать регулярное выражение здесь:

import re 
txt = "[something name=\"Paul\" other=\"1/1/1\"][something name=\"James\" other=\"4/3/5\"][something name=\"Victor\" other=\"7/2/6\"][something name=\"Jane\" other=\"4/3/6\"]" 
for name in re.findall('name\=\\"(.*?)\\\"', txt): 
    print name 

распечаток:

Paul 
James 
Victor 
Jane 
1

Другой подход должен был бы разделить строку, как следует:

txt = "[something name=\"Paul\" other=\"1/1/1\"][something name=\"James\" other=\"4/3/5\"][something name=\"Victor\" other=\"7/2/6\"][something name=\"Jane\" other=\"4/3/6\"]" 

for x in txt.split(']'): 
    if len(x): 
     print x.split('"', 2)[1] 

Предоставление:

Paul 
James 
Victor 
Jane