On Thu, 21 Jun 2018 22:41:48 +0530, Ganesh Pal <ganesh1...@gmail.com> wrote: [snip] [what I think OP wants:] > > *.................................................................* > > *||STUDENT NAME||STUDENT AGE||MARKS SCORED||PASSED YEAR||FEES PAID||* > > *||John || 28 || 13 || 2018 || 250 ||* > > > Questions: > > (1) Below is my partial solution , any comments and suggestions ( I am not > to get the “||” delimiter correctly, trying it ) > > #!/usr/bin/python > # A Python program to write the values of an OderedDict into a file > # The values should be formatted correctly under its headers > > from collections import OrderedDict > > tmp = '/tmp/student_record.txt' > student = [("NAME", "John"), > ("AGE", 28), > ("SCORE", 13), > ("YEAR", 2018), > ("FEE", 250)] > > student = OrderedDict(student) > header_list = ["STUDENT NAME", "STUDENT AGE", "MARKS SCORED", "PASSED YEAR", > "FEES PAID"] > > header_string = '||' + '||'.join(header_list) + '||' > with open(tmp, 'a') as fd: > for item in header_string: > fd.write("%s" % (item)) > > for value in student.values(): > fd.write("\n") > fd.write("||") > fd.write("%s" % (value)) > > *output:* > *root@X1:/Play_ground/SPECIAL_TYPES# cat /tmp/student_record.txt* > *||STUDENT NAME||STUDENT AGE||MARKS SCORED||PASSED YEAR||FEES PAID||* > *||John* > *||28* > *||13* > *||2018* [snip]
You don't say which aspects of this output you find unsatisfactory and want help with, but . . . - You're writing "\n" in front of every *field*, when you only want to write it in front of every line; and - To make the columns line up right, you'll want to specify the widths of the character strings being written, e.g., using "%10s" in place of "%s". -- To email me, substitute nowhere->runbox, invalid->com. -- https://mail.python.org/mailman/listinfo/python-list