2016-11-12 5 views
-1

いくつかのXMLをまとめたテキストファイルがあります。目標は、テキストを複数のXMLに分割することです。私は、コード文字列のリストからXMLファイルを作成する

def split_file(filename): 
    """ 
    Split the input file into separate files, each containing a single patent. 
    As a hint - each patent declaration starts with the same line that was 
    causing the error found in the previous exercises.  
    """ 
    f = open(filename, 'r').read().split('\n') 
    last_header_line = 0 
    counter_q_of_files = 0  
    for line in enumerate(f) : 
     lines_ls = [] 
     ## add that line to an object that will be converted in xml file on the next condition 
     ## code here 
     if line[1] == '<?xml version="1.0" encoding="UTF-8"?>': 
      ## Make an xml file out of the previously created object, from lines_ls[last_header_line:line[0]] 
      ## code here 
      last_header_line = line[0] 
      counter_q_of_files = counter_q_of_files+1 

のこのスニペットに付属してきた

は、私は文字列のリスト(将来XMLの1行につき1つの要素)を作成し、XMLファイルにそのリストを変換できますか?はいの場合、どうですか?

+0

コードのインデントを修正してください。関数名の下には、すべてのコードが関数内にある必要があります。だからあなたの押し込みを修正してください。 –

+0

これは問題ありませんか? @cco –

+0

あなたの時間をありがとう、今私はそれが@ccoだと思う –

答えて

0

メモリが大量にある場合は、'\n'の代わりに'<?xml version="1.0" encoding="UTF-8"?>'に分割してください。

行を累積したい場合は、特にappendメソッドについてのリストを確認してください。文字列のjoinメソッドも便利です。あなたのコードにenumerateを使っても間違っているわけではありませんが、それは役に立ちそうです。

+0

私はappendメソッドを知っています。問題は次のとおりです。 私は各行を追加して、行のリストで終わる場合、そのリストをどのようにしてXMLファイルにするのですか? –

+0

US PTOのデータを読んでいるならば(あなたがいるかもしれないと思う)、 ''\ n' 'を使って行を結合するだけで、有効なXMLファイルになります有効なXMLであるためには ''\ n' 'が必要ですが、正しい内容が必要な場合があります)。 – cco

+0

あなたのコメントをありがとうが、それは私が探していたものではありません。 '#line_lsの内容から文字列を作成し、last_header_lineからline [0]へ str_lines = '\ n'.join(lines_ls [last_header_line:line [0]]) new_file_name = "{} - {}"。フォーマット(ファイル名、counter_q_of_files) output_fileとしてopen(new_file_name、 "wb"): output_file.write –

関連する問題