एक टेबल बनाने के बिना अजगर में तारों को संरेखित कैसे करें - पायथन, सुंदर प्रिंट

मुझे एक समस्या है। मैं अजगर में सूचियों की एक सीरी को एक ऊर्ध्वाधर संरेखित करने के लिए प्रिंट करने की कोशिश कर रहा हूं। मेरा कोड है:

def show():
book = "data.txt"
f = open(book,"r")
line = f.readlines()
f.close()
x=0
z = ""
l = []
x = []
i = 0
starting = "{:>4}  {:>15}  {:>15}".format("Name", "Gender", "Year")
print(starting)
for p in line:
p = p.replace(","," ")
x = p.index(" ")
name = p[0:x]
a = p.index("e 1")
gender = p[x:a+1]
year = p[(a+2):]
if len(name) == 3:
line_new = "{:>2}  {:>15}  {:>15}".format(name, gender, year)
else:
line_new = "{:>5}  {:>15}  {:>15}".format(name, gender, year)
print(line_new)

समस्या यह है कि मैं कुछ करने की कोशिश कर रहा हूँ:

यहां छवि विवरण दर्ज करें मैं बाईं ओर के सभी नाम रखना चाहता हूं (और मुझे समस्या नहीं है) फिर, लिंग के तहत, मैं सभी के लिए एक ही ऊर्ध्वाधर और एक ही वर्ष में समान लिंग सूची बनाना चाहता हूं

उत्तर:

जवाब के लिए 0 № 1

अप्रमाणित, लेकिन यह प्रयास करें:

import itertools
with open("data.txt") as data:
pep =  [line.strip().split(",") for line in data]
widths = [len(max(r, key=len)) for r in itertools.izip_longest(*pep, fillvalue="")]

print "%-{0}%s%-{1}%s%-{2}%s".format(widths[0], widths[1], widths[2])
%("Name", "Gender", "Year")

print "n".join(["%-{0}%s%-{1}%s%-{2}%s".format(widths[0], widths[1], widths[2])
%(attr[0], attr[1], attr[2]) for attr in pep])

संबंधित सवाल
सबसे लोकप्रिय