2012-12-22 141 views
-3

我是python中的新成员,需要帮助。 我有一个文件,并希望提取文本到另一个文件。Python从文件中提取数据并写入另一个

输入文件看起来是这样的:

<Datei Kennung="4bc78" Titel="Morgen 1" Bereich="I847YP"> Morgen 1 

Here is text, contains numbers and text. 
Here is text, contains numbers and text. 
Here is text, contains numbers and text. 
Here is text, contains numbers and text. 
Here is text, contains numbers and text. 

</Datei> 
<Datei Kennung="469" Titel="Trop Hall W " Bereich="izr"> Trop Hall W 

Here is text, contains numbers and text. 
Here is text, contains numbers and text.  


</Datei> 

对于我的文件中第一个区域,我需要为摩根的1.txt 的文件,其中包含这样的输出:

Morgen 1 

Here is text, contains numbers and text. 
Here is text, contains numbers and text. 
Here is text, contains numbers and text. 
Here is text, contains numbers and text. 
Here is text, contains numbers and text. 

我从拿到其他用户本代码:

import re 
REG_PARSE=re.compile(r'<Datei[^>]*Titel="\s*([^"]*?)\s*"[^>]*>\s*\1\s*(.*?</Datei>',re.dotall) 
with open(filename) as infile: 
for outfilename, text = REG_PARSE.finditer(infile.read()): 
    with open('%s.txt'%outfilename,'w') as outf: 
     outf.write(text) 

但它不起作用

+0

使用['lxml.etree'(http://lxml.de/)读取INFILE,因为它似乎是XML格式。然后使用普通的[file-io](http://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files)写入另一个文件。此外,你到目前为止尝试过什么? – inspectorG4dget

+1

老兄,请编辑您的问题,而不是发表评论与代码 – inspectorG4dget

+0

我已经尽我所能将您的代码添加到您的OP。请确认它是正确的 – inspectorG4dget

回答

-2

如果你想快速和肮脏的方式做到这一点,而不使用XML(推荐)尝试了这一点...它的作品...

fp = open("data.txt", "r") 
data = fp.read(); 

data = data.split(">"); 

i = 0; 

while True: 
    filename = data[i].split('" ')[1].split('"')[1] 
    text = data[i+1].split('<')[0].strip() 

    fp1 = open(filename + ".txt", "w") 
    fp1.write(text) 
    fp1.close() 

    i += 2 
    if i >= (len(data) - 1): 
     break; 
+0

脆弱的修饰代码.... –

+0

嗨,这工作完美。 – user1923258

+0

非常感谢。祝圣诞快乐能和你和家人在一起。 – user1923258

-1

,这将做的工作:

with open('path/to/input') as infile: 
    found = False 
    outfile = open("Morgen 1.txt", 'w') 
    for line in infile: 
     if line.startswith("<Datei") and 'Titel="Morgen 1"' in line: 
      found = True 
     elif line.startswith("</Datei"): 
      found = False 
     if found: 
      if not line.startswith("<Datei"): 
       outfile.write(line) 
+0

感谢您的回答,但其他代码完全适合我。我希望你和家人圣诞快乐。 – user1923258

0

看看这对你的作品:

#!/usr/bin/env python 
#-*- coding:utf-8 -*- 
from xml.dom import minidom 
xmldoc = minidom.parse('/path/to/file') 
items = xmldoc.getElementsByTagName('Datei') 

for s in items: 
    if s.attributes['Titel'].value == "Morgen 1": 
     with open("Morgen 1.txt", "w") as fileOutput: 
      listLines = [ line.strip() 
          for line in s.firstChild.nodeValue.strip().split("\n") 
          if line.strip() 
          ] 

      fileOutput.write("\n".join(listLines)) 
      break 
相关问题