2016-12-10 4 views
0

タグを削除して新しいファイルを作成しようとしていますが、これを達成する方法がわかりません。私はXMLタグを持つファイルを与えています。リストと文字列を作るためにstripとsplitを使いたいと思います。私はXMLパーサ、または他のライブラリを使用することはできません。手動でXMLタグを削除するにはどうすればよいですか?

<team> <name>Denver Broncos</name> <players> <player> <jno>50</jno> <fname>Zaire</fname> <lname>Anderson</lname> <height>5-11</height> <weight>220</weight> <age>24</age> <position>ILB</position> <school>Nebraska</school> </player> <player> <jno>48</jno> <fname>Shaquil</fname> <lname>Barrett</lname> <height>6-2</height> <weight>250</weight> <age>23</age> <position>OLB</position> <school>Colorado State</school> </player> <player> <jno>35</jno> <fname>Kapri</fname> <lname>Bibbs</lname> <height>5-11</height> <weight>203</weight> <age>23</age> <position>RB</position> <school>Colorado State</school> </player> </players> </team> 

私は以下のように次の文を生成するために、文字列/リストを使いたい:ここ

はテキストファイルです。ここ

デンバー・ブロンコスのための名簿です。チームには3人のプレーヤーがいます( )。 Zaire Anderson、ILB、#50を身に着けています。彼は5フィート11 高さで、体重は220ポンドです。彼は24歳で 歳です。彼はネブラスカに行きました。シャキール・バレット(OLB)は#48を着用しています。彼は6 足2インチの高さで、体重250ポンドです。彼は23歳で 歳です。彼はコロラド州に行った。 Kapri Bibbs、RB、#48を着用しています。彼は5 足11インチ、体重203ポンドです。彼は23歳で 歳です。彼はコロラド州に行った。

def test(filename): 
    f=open(filename,"r") 
    line = f.readline() 
    f2 = open("BearsRoster.txt", "w") 
    print line 
    myList = [] 
    stringl = "" 
    for i in line: 
     if i == ("<"): 
      while i != ">": 
       line.remove(i) 


     else: 


      stringl = stringl + i 
      myList.append(stringl) 
      stringl = "" 
     else: 
      stringl = stringl + i 
    print myList 
    for i in myList: 
     print i 
     print myList 

     if i[0] == "<" or " ": 
      myList.remove(i) 

は明らかに、このコードが正しくありません。私の考えは、文字列を通過し、そのコード<xxxxx>を取り除くことでした。私はちょうどそれに近づく方法を知らない。その後、私はそれを私が投稿した文章に入れたいと思います。タグを削除するには

+1

[XMLパーサーを使ってみましたか?](http://stackoverflow.com/questions/1912434/how-do-i-parse-xml-in-python) –

+0

ライブラリをインポートすることはできません。したがって、XMLパーサを使用することはできません – imaqtpie

+0

この[質問](http://stackoverflow.com/questions/12823568/python-strip-xml-tags-from-document)の回答は役に立ちますか? – af3ld

答えて

0

は、新しい文字列に文字をコピーする際に制御するための変数skip=True/Falseを使用しています。あなたは<は、あなたがタグからのデータを必要とするならば、あなたはパーサを構築する必要がありますskip=False

data = '''<team> <name>Denver Broncos</name> <players> <player> <jno>50</jno> <fname>Zaire</fname> <lname>Anderson</lname> <height>5-11</height> <weight>220</weight> <age>24</age> <position>ILB</position> <school>Nebraska</school> </player> <player> <jno>48</jno> <fname>Shaquil</fname> <lname>Barrett</lname> <height>6-2</height> <weight>250</weight> <age>23</age> <position>OLB</position> <school>Colorado State</school> </player> <player> <jno>35</jno> <fname>Kapri</fname> <lname>Bibbs</lname> <height>5-11</height> <weight>203</weight> <age>23</age> <position>RB</position> <school>Colorado State</school> </player> </players> </team>''' 

skip = False 
result = '' 

for char in data: 
    if char == '<': 
     skip = True 
    elif char == '>': 
     skip = False 
    elif not skip: 
     result += char 

print(result) 

を設定し、あなたが>を見つけるskip=Trueを設定見つける

- タグの名前を覚えて、開始タグと終了タグを認識し、おそらくタグ付きツリーを構築するでしょう。だから、もっと多くの仕事が必要です。

関連する問題