TL;DR -> Is there a table writing module on PyPi (I've failed to find any) that takes in lists as parameters and makes a table out of those lists. I am asking this because I've looked on PyPI, but I have not found anything similar to actually printing strings or writing strings to files.
Imagine having a lot of statistics, and having to write them down neatly in a table, like this, (I've been trying to teach a class about the differences between the different sorting algorithms out there) (Also, please note that the example given here does not match the output of the code given below. I've simple done this in order to explain what I want and not make huge chunks of code that one has to scroll through):
#########################
# LENGTH ||| TIME(s) #
#########################
# 0 ||| 0.00000 #
# 250 ||| 0.00600 #
# 500 ||| 0.02100 #
# 750 ||| 0.04999 #
# 1000 ||| 0.08699 #
# 1250 ||| 0.13499 #
# 1500 ||| 0.19599 #
# 1750 ||| 0.26900 #
# 2000 ||| 0.35099 #
#########################
Ideally, I would write something like this to save to a file, like the one below. set of lists, one list containing the one set of values, the other containing another set of corresponding values.
if __name__ == '__main__':
with open(os.path.join(os.path.dirname(__file__), 'Sort Stats', 'stats_exp.txt'), 'w') as stats:
stats.write(
"O-######################==#######################==#######################==######################-O
")
stats.writelines(
"|{0:^23}||{1:^23}||{2:^23}||{3:^23}|
".format("Bubble Sort", "Insertion Sort", "Merge Sort (R)",
"Merge Sort (I)"))
stats.write(
"|#######################||#######################||#######################||#######################|
")
stats.write(
"| LENGTH | TIME(s) || LENGTH | TIME(s) || LENGTH | TIME(s) || LENGTH | TIME(s) |
")
stats.write(
"|#######################||#######################||#######################||#######################|
")
for times_taken, t1, t2, t3, t4 in zip(total_lengths, sort_times_bubble, sort_times_ins, sort_times_merge_r,
sort_times_merge_i):
stats.write(
"|{0:^11}|{1:^11}||{2:^11}|{3:^11}||{4:^11}|{5:^11}||{6:^11}|{7:^11}|
"
.format(
times_taken, str(t1)[:6],
times_taken, str(t2)[:6],
times_taken, str(t3)[:6],
times_taken, str(t4)[:6],
)
)
stats.write(
"O-######################==#######################==#######################==######################-O
")
print "Data writing complete"
As you can see, its not exactly pretty, and most importantly its not something that is easy to extend, since it pretty much prints something out.
What I want to do is create a module for this and upload it to PyPI. However, if someone's already made something akin to this, then it would be wasted effort, and I could simple fork their repositories instead of actually having to write the code from scratch.
See Question&Answers more detail:
os