def xml2csv(): data = mycsv.getdata() xml = untangle.parse(data) header = xml.file.headers.cdata.split(",") header2 = [i.replace(" ", "_") for i in header] values_set = [] for i in header2: content = "record.%s.cdata" % i values = [] for record in xml.file.data.record: values.append(eval(content)) values_set.append(values) table = np.array(values_set) table = [",".join(j) for j in table] new_set = [] for i in range(len(table)): new = table[i].split(",") new_set.append(new) a = np.transpose(new_set) b = pd.DataFrame(data=a, columns=header) return b.to_csv(sys.stdout, sep=",", header=header, index=False)
def csv2html(): header, data = mycsv.readcsv(mycsv.getdata()) start = "<html>\n<body>\n<table>\n" end = "</table>\n</body>\n</html>" header_row = "".join(["<th>%s</th>" % i for i in header]) header_row = "<tr>%s</tr>\n" % header_row data_row_set = [] for i in data: data_row = "".join(["<td>%s</td>" % j for j in i]) data_row_set.append("<tr>%s</tr>\n" % data_row) data_row_set = "".join(data_row_set) together = start + header_row + data_row_set + end return together
def csv2json(): header, data = mycsv.readcsv(mycsv.getdata()) start = '{\n' end = "\n}" header_element = ",\n".join( ['\t\t"%s"' % header[i] for i in range(len(header))]) header_body = '\t"headers": [\n' + header_element + "\n\t]," data_body3 = [] data_body4 = [] for j in data: data_body2 = [] for i in range(len(header)): data_body = '\n\t\t\t"%s": "%s"' % (header[i], j[i]) data_body2.append(data_body) data_body3 = "\n\t\t{" + ",".join(data_body2) + "\n\t\t}" data_body4.append(data_body3) data_body_final = '\n\t"data": [' + ",".join(data_body4) + "\n\t]" together = start + header_body + data_body_final + end return together
def csv2xml(): header, data = mycsv.readcsv(mycsv.getdata()) start = '<?xml version="1.0"?>\n<file>' end = "\n</file>" header2 = [i.replace(" ", "_") for i in header] header_body = "\n <headers>%s</headers>" % (",".join( [header[i] for i in range(len(header))])) data_body3 = [] data_body4 = [] for j in data: data_body2 = [] for i in range(len(header2)): data_body = "<%s>%s</%s>" % (header2[i], j[i], header2[i]) data_body2.append("".join(data_body)) data_body3 = "\n <record>\n %s\n </record>" % ( "".join(data_body2)) data_body4.append(data_body3) data_body_final = "\n <data>%s\n </data>" % "".join(data_body4) together = start + header_body + data_body_final + end return together
import mycsv from jinja2 import Environment, PackageLoader, select_autoescape #get data header, data = mycsv.readcsv(mycsv.getdata()) #write HTML table #get templates from app environ = Environment(loader=PackageLoader('csv2html', 'templates'), autoescape=select_autoescape(['html', 'json'])) #get template from available templates template = environ.get_template('testJSON') print(template.render(header=header, data=data))
import untangle import xmltodict import mycsv # get data # xml = untangle.parse(data_string) xml = untangle.parse(mycsv.getdata()) csv_string = xml.file.headers.cdata+"\n" # replace _ in headers with spaces csv_string = csv_string.replace('_',' ') for recordIndex, record in enumerate(xml.file.data.record): for childIndex, child in enumerate(record.children): if childIndex < len(xml.file.data.children[recordIndex].children)-1 and recordIndex < len(xml.file.data.children): #continue row csv_string += record.children[childIndex].cdata+ "," elif childIndex == len(xml.file.data.children[recordIndex].children)-1 and recordIndex < len(xml.file.data.children)-1: #finish row csv_string += record.children[childIndex].cdata + "\n" else: #finish file csv_string += record.children[childIndex].cdata print(csv_string)
def xml2csv(data): xml = untangle.parse(data) headers = xml.file.data.record[0].get_elements() head = [] file = open("temp.csv", 'a').close() file = open("temp.csv", "w") csv_writer = csv.writer(file) for node in headers: name = node._name.replace("_", " ") head.append(name) csv_writer.writerow(head) xmldata = xml.file.data.record for node in xmldata: curr = node.get_elements() vals = [] for v in curr: vals.append(v.cdata) csv_writer.writerow(vals) file.close() file = open("temp.csv", 'r') print(file.read(), end="") file.close() os.remove("temp.csv") xml2csv(mycsv.getdata())
# https://untangle.readthedocs.io/en/latest/ # https://github.com/stchris/untangle import untangle import mycsv xmltxt = mycsv.getdata() xml = untangle.parse(xmltxt)
""" import mycsv def csv2xml(data): print("<?xml version=\"1.0\"?>") print("<file>") header, data = mycsv.readcsv(data) print("<headers>", end="") h = [] for head in header: h.append(head) print(",".join(h), end="") print("</headers>") print("<data>") for row in data: print("<record>") for h, val in zip(header, row): r = "<" + h + ">" + val + "</" + h + ">\n" r = r.replace(" ", "_") print(r, end="") print("</record>") print("</data>") print("</file>") csv2xml(mycsv.getdata())
def csv2html(data): print("<html>") print("<body>") print("<table>") header, data = mycsv.readcsv(data) print("<tr>", end="") for head in header: print("<th>" + head + "</th>", end="") print("</tr>") for row in data: print("<tr>", end="") for val in row: print("<td>" + val + "</td>", end="") print("</tr>") print("</tr>" ) print("</body>") print("</table>") print("</html>") csv2html(mycsv.getdata())
""" import mycsv import json import csv import os def json2csv(data): jsondata = json.loads(data) header = jsondata["headers"] file = open("temp.csv", 'a').close() file = open("temp.csv", "w") csv_writer = csv.writer(file) csv_writer.writerow(header) nodes = jsondata["data"] for node in nodes: vals = [] for key, value in node.items(): vals.append(value) csv_writer.writerow(vals) file.close() file = open("temp.csv", 'r') print(file.read(), end="") file.close() os.remove("temp.csv") json2csv(mycsv.getdata())
import json import mycsv js = json.loads(mycsv.getdata()) headers = js['headers'] headcount = 0 for head in headers: if (headcount == 0): print(head, end='') else: print("," + head, end='') headcount = headcount + 1 print() data = js['data'] for row in data: colcount = 0 for col in row.values(): if (colcount == 0): print(col, end='') else: print("," + col, end='') colcount = colcount + 1 print()
import mycsv import json jsonString = mycsv.getdata() jasonData = json.loads(jsonString) headers = jasonData['headers'] data =jasonData['data'] output = '' for headIndex, head in enumerate(headers): if headIndex < len(headers)-1: # print with comma output+=head+"," else: # move to next line output+=head+"\n" for datumIndex, datum in enumerate(data): if datumIndex < len(data)-1: #print, without quotes, with comma for peiceIndex, peice in enumerate(datum): if peiceIndex < len(datum)-1: #add an entry output+=datum[peice]+"," elif peiceIndex == len(datum)-1: #finish non-last line output+=datum[peice]+"\n" else: #reached last row for peiceIndex, peice in enumerate(datum): if peiceIndex < len(datum)-1: #add an entry output+=datum[peice]+","