2016-12-07 12 views
0

私はたくさんの情報を持つファイルを持っています。例えば、ラインの全てがこの同じパターンは、次のとおりです。ファイルの分割機能をPythonで使うには?

 <school>Nebraska</school> 

を私は「ネブラスカ」を取得するために、スプリット機能を使用しようとしています。これは私がこれまで行ってきたことですが、私は最初のものの代わりに両方の部分をカットするために何を入れるべきか分かりません。これにより

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

私が取得:

Nebraska</school 
+3

を、あなたがすべきですBeautifulSoup(HTML)やLXML(XML)などの適切なパーサーを使用してください。 Pythonには、トリックを行うパーサーも付属していますが、私が提案したものはより優れています。 – kindall

+0

[パーサイン](https://docs.python.org/3/library/xml.html)または 'lxml'や' BeautifulSoup'のようなPyPIモジュールのXMLパーサーを使用してください。独自のXML解析コードをロールしないでください。 – ShadowRanger

+0

ファイルの例がありますか? * MLのサブセットを扱っている可能性がありますが、これは扱いが簡単かもしれません。 – Iluvatar

答えて

1

あなたは、文字列の一部を切断しました。同じ方法で続けてください:

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

つまり、BeautifulSoupのようなHTMLパーサーでHTMLを解析する必要があります。

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

中:

s.split('>') 

アウト:

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

中:

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

アウト:

['Nebraska', '/school'] 

:あなたは正規表現を使用でき

'Nebraska' 
0

:アウト

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

それがXMLやHTMLだし、それがあるかのように見える場合

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) 
関連する問題