Hey,I wanted to know how to read a .txt file and the output should be in .xml format.

I have the input file as input1.txt
My code:

from lxml import etree
import csv

root = etree.Element('data')
#f = open('input1.txt','rb')
rdr = csv.reader(open("input1.txt",newline='\n'))
header = next(rdr)
for row in rdr:
    eg = etree.SubElement(root, 'eg')
    for h, v in zip(header, row):
        etree.SubElement(eg, h).text = v

 f = open(r"C:\temp\input1.xml", "w")

I'm getting an error like:

Traceback (most recent call last):
  File "E:\python3.2\input1.py", line 11, in <module>
    etree.SubElement(eg, h).text = v
  File "lxml.etree.pyx", line 2995, in lxml.etree.SubElement (src\lxml\lxml.etree.c:69677)
  File "apihelpers.pxi", line 188, in lxml.etree._makeSubElement (src\lxml\lxml.etree.c:15691)
  File "apihelpers.pxi", line 1571, in lxml.etree._tagValidOrRaise (src\lxml\lxml.etree.c:29249)
ValueError: Invalid tag name '    Paper 1'

And I want it to consider the white spaces also. I'm using Python 3.2. Any suggestions?

Edited 1 Year Ago by varshaholla

Where did you get that code ? Your input file is not a csv file. You'll have to write your own parser for the text file. Perhaps the starting point could be to write your desired xml output by hand. You must first determine where you want to go.

Edited 1 Year Ago by Gribouillis

This article has been dead for over six months. Start a new discussion instead.