Question

The way I understand it is i'm trying to link a list that I read into...

The way I understand it is i'm trying to link a list that I read into python from a cvs file to json and xml and pass the doctest. Please refere the lines where I show what I did below.

home / study / engineering / computer science / questions and answers / """this script converts a csv file with headers ...

Question: """This script converts a CSV file with headers to...

Bookmark

"""This script converts a CSV file with headers to XML or JSON, depending on
the command line argument supplied.

This script will be executed by calling:

    ```
    python src/lab1.py xml/json <filename>
    ```

Output of XML and JSON should be printed to stdout.
"""
# Use argparse or argv to parse command line arguments.
import argparse  # https://docs.python.org/2/library/argparse.html
from sys import argv  #https://docs.python.org/2/library/sys.html#sys.argv
import csv
import xml
import json


def parse_csv(filename):
    """Parse a CSV file by separating it into headers and additional data.

    Parameters
    ----------
    filename : str
        A path to a CSV file.

    Returns
    -------
    (list, list)
        A tuple containing two lists: 
        
        1. The first list should contain the headers from the CSV file. If
           the headers are "first_name, last_name, dob" then this will be
           ["first_name", "last_name", "dob"].
        2. The second list should contain the data in the CSV file as a
           list of lists. For example, if there are two rows in the CSV
           file "1, 2, 3," and "4, 5, 6" then this list would look like
           [[1, 2, 3], [4, 5, 6]].
    """
    pass

###################################
# Create your other functions here.
###################################

if __name__ == "__main__":
    # Parse command line arguments to convert CSV to either XML or JSON.
    pass

i have already finished the first function parse_csv

def parse_csv(filename):

new_file = open(filename, "r") 
csv_reader = csv.reader(new_file) 
file_header= csv_reader.next()
new_lst = []
for row in csv_reader:
    new_lst.append(row)
return (file_header,new_lst)

now i want to wite function to convert it to xml

def covert_2_xml(list):

and another function to convert it to json

def convert_2_json(list):

i have to hard copy only records and patient and all the csv file information will be given when i call the functions later passing the file name as a parameter.

here is the sample input file:

mrn,dob,firstName,lastName,icd9_1,icd9_2
1111,9/1/75,Jonathan,Beyers,414.01,508.2 
2222,8/5/70,Melissa,Johnston,508.0,485

the xml output should be like:

<records>
 <patient>
   <mrn>1111</mrn>
   <dob>9/1/75</dob>
   <firstName>Jonathan</firstName>
   <lastName>Beyers</lastName>
   <icd9_1>414.01</icd9_1>
   <icd9_2>508.2</icd9_2>
 </patient>
 <patient>
   <mrn>2222</mrn>
   <dob>8/5/70</dob>
   <firstName>Melissa</firstName>
   <lastName>Johnston</lastName>
   <icd9_1>508.0</icd9_1>
   <icd9_2>485</icd9_2>
 </patient>
</records>

and the json output should be like:

{  "records":[
   {
     "patient":{
       "mrn":"1111",
       "dob":"9/1/75",
       "firstName":"Jonathan",
       "lastName":"Jonathan",
       "icd9_1":"414.01",
       "icd9_2":"508.2"
     }
   },
   {
     "patient":{
       "mrn":"2222",
       "dob":"8/5/70",
       "firstName":"Melissa",
       "lastName":"Johnston",
       "icd9_1":"508.0",
       "icd9_2":"485"
     }
   }
 ]
}
0 0
Add a comment Improve this question Transcribed image text
Answer #1

I have modified your code to convert CSV to XML format.

Hope this helps you.

import csv
from lxml import etree

csvFile = 'C:/Users/vipul/Desktop/file.csv'

def parse_csv(csvFile):   
csvData = csv.reader(open(csvFile), delimiter='\t')
header = next(csvData)
root = etree.Element('records')
for row in csvData:
prod = etree.SubElement(root,'patient')
for index in range(0, len(header)):
child = etree.SubElement(prod, header[index])
child.text = row[index]
prod.append(child)

result = etree.tostring(root, pretty_print=True)
print(result)

parse_csv(csvFile)

OUTPUT:

<records> 2 <patient> <mrn>1111</mrn> <dob>9/1/1975</dob:> < firstName >Jonathan</ firstName> <lastName>Beyers</lastName> 7 <

Add a comment
Know the answer?
Add Answer to:
The way I understand it is i'm trying to link a list that I read into...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • Python with Pandas dataframe I have a csv file that contains a large number of columns...

    Python with Pandas dataframe I have a csv file that contains a large number of columns and rows. I need to write a script that concatenates some elements of the first row with some elements of the 2 row. Something like # if data[1][0] starts with ch then concatenate the element right below it. I have attached a picture of just a sample of my data. The booleans have to stay on there as is. But I must drop the...

  • PYTHON 3 Object Oriented Programming ***a9q3.py file below*** class GradeItem(object): # A Grade Item is anything...

    PYTHON 3 Object Oriented Programming ***a9q3.py file below*** class GradeItem(object): # A Grade Item is anything a course uses in a grading scheme, # like a test or an assignment. It has a score, which is assessed by # an instructor, and a maximum value, set by the instructor, and a weight, # which defines how much the item counts towards a final grade. def __init__(self, weight, scored=None, out_of=None): """ Purpose: Initialize the GradeItem object. Preconditions: :param weight: the weight...

  • Reading and parsing a CSV file in Java NOTE: a.) The first row contains the field...

    Reading and parsing a CSV file in Java NOTE: a.) The first row contains the field definition b.) Columns are separated by comma This is the data.csv file These are the coding instructions. Questions 1,2 and 3 This is my code so far FirstName Radioactive Man LastName DateOfBirth SSN Salary Role Zip Phone garlic 9/29/1912 846330158 Administration 69989 39157 7166875260 Mockingbird Captain Triumph Deathstroke, th persimmon 9/22/1956 835340509 Administration 13884 39157 1421813391 usb 7/19/1940 8/8/1970 979204716 Back Office 75710 39157...

  • Reading and parsing a CSV data file in java Note: I.) the first row contains the...

    Reading and parsing a CSV data file in java Note: I.) the first row contains the field definition II.) Columns are separated by comma This is the data.csv file These are the instructions This is my code so far A D F G H J K 1 FirstName LastName DateOfBirth SSN Role Salary Zip Phone 2 Radioactive Man BMockingbird 4Captain Triumph 5 Deathstroke, th Chief garlic 9/29/1912 846330158 Administration 39157 7166875260 69989 persimmon 9/22/1956 835340509 Administration 13884 39157 1421813391 usb...

  • Reading and parsing a CSV data file in java Note: I.) the first row contains the...

    Reading and parsing a CSV data file in java Note: I.) the first row contains the field definition II.) Columns are separated by comma This is the data.csv file These are the instructions This is my code so far A D F G H J K 1 FirstName LastName DateOfBirth SSN Role Salary Zip Phone 2 Radioactive Man BMockingbird 4Captain Triumph 5 Deathstroke, th Chief garlic 9/29/1912 846330158 Administration 39157 7166875260 69989 persimmon 9/22/1956 835340509 Administration 13884 39157 1421813391 usb...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT