2016-12-07 3 views
0

У меня есть файл с кучей информации. Например, все линии следуют той же схеме, как это:Как использовать функцию split для файла в python?

 <school>Nebraska</school> 

Я пытаюсь использовать функцию разделения только восстановить «Небраска». Это то, что у меня есть до сих пор, но я не уверен, что делать, чтобы отключить обе части, а не только первую.

with open('Pro.txt') as fo: 
     for rec in fo: 
      print(rec.split('>')[1]) 

С этим я получаю:

Nebraska</school 
+3

Если это XML или HTML, и это выглядит, как будто это, вы должны используйте соответствующий синтаксический анализатор, такой как BeautifulSoup (HTML) или LXML (XML). Python также поставляется с парсерами, которые будут делать трюк, хотя те, которые я предложил, лучше. – kindall

+0

Используйте XML-парсер, либо [встроенный] (https://docs.python.org/3/library/xml.html), либо модуль PyPI, например 'lxml' или' BeautifulSoup'. Не пытайтесь перевернуть собственный XML-код синтаксического анализа. – ShadowRanger

+0

У вас есть пример файла? Возможно, вы имеете дело с подмножеством * ML, с которым может быть легче работать. – Iluvatar

ответ

1

Вы отрезали часть строки. Продолжайте таким же образом:

>>> s = '<school>Nebraska</school>' 
>>> s.split('>')[1] 
'Nebraska</school' 
>>> s.split('>')[1].split('<')[0] 
'Nebraska' 

Тем не менее, вы должны разобрать HTML с HTML-парсер, как BeautifulSoup.

0
s = '<school>Nebraska</school>' 

в:

s.split('>') 

из:

['<school', 'Nebraska</school', ''] 

в:

s.split('>')[1].split('<') 

из:

['Nebraska', '/school'] 

в:

s.split('>')[1].split('<')[0] 

из:

'Nebraska' 
0

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

import re 
regexp = re.compile('<school>(.*?)<\/school>') 

with open('Pro.txt') as fo: 
    for rec in fo: 
     match = regexp.match(rec) 
     if match: 
      text = match.groups()[0] 
      print(text)