मैं अजगर में एक फ़ंक्शन लिखने की कोशिश कर रहा हूं, जो सीएसवी फाइलों को पढ़ता है और उन्हें अच्छी तरह से स्वरूपित करता है। इनपुट फाइलें सिर्फ मानक सीएसवी फाइलें हैं। जहां प्रत्येक पंक्ति एक व्यक्ति का प्रतिनिधित्व करती है। आउटपुट स्वरूप इस तरह दिखना चाहिए:
[
("Age", "Gender", "Weight (kg)", "Height (cm)"),
("28", "Female", "58", "168"),
("33", "Male", "", "188")
]
बात सिर्फ यह नहीं है कि मैं यह कैसे कर सकता हूं। मुझे पता है कि मैं सूचियों की अपनी सूची में प्रत्येक तत्व के माध्यम से लूप कर सकता हूं और इसे प्रिंट कर सकता हूं, लेकिन मैं उन्हें ऊपर के रूप में वापस करना चाहता हूं। एकमात्र प्रारूप जिसे मैं समाप्त करने का प्रबंधन करता हूं वह दिखता है:
[('Age', 'Gender', 'Weight (kg)', 'Height (cm)'), ('28', 'Female', '58', '168'), ('33', 'Male', '', '188')]
अगर किसी को मेरा कोड देखने की ज़रूरत है (मुझे लगता है कि यह बिल्कुल अच्छी तरह से कोडित नहीं है लेकिन मैं सीख रहा हूं):
def read_csv(path):
newlist = []
with open("example.csv", "r") as f:
nr_of_lines = 0
for line in f.readlines():
counter = 0
nr_of_lines += 1
while "," in line:
idx = line.find(",")
entry = line[0:idx]
newlist.append(entry)
line = line[idx+1:]
counter += 1
if "," not in line:
idx2 = line.find("\n")
newlist.append(line[:idx2])
nr_elements_per_line = int(len(newlist)/nr_of_lines)
tuple_list = []
for i in range(nr_of_lines):
tuple_list.append(tuple(newlist[nr_elements_per_line*i:nr_elements_per_line+i*nr_elements_per_line]))
return tuple_list
print(read_csv("example.csv"))
3 जवाब
आप थोड़ी बेहतर छपाई के लिए pprint
मॉड्यूल का उपयोग कर सकते हैं, या सभी को स्वयं प्रिंट कर सकते हैं:
data = [('Age', 'Gender', 'Weight (kg)', 'Height (cm)'),
('28', 'Female', '58', '168'),
('33', 'Male', '', '188')]
print('[')
for inner in data:
print(f"\t{inner}")
print(']')
आउटपुट:
[
('Age', 'Gender', 'Weight (kg)', 'Height (cm)')
('28', 'Female', '58', '168')
('33', 'Male', '', '188')
]
pprint
के साथ:
from pprint import pprint
pprint(data)
आउटपुट:
[('Age', 'Gender', 'Weight (kg)', 'Height (cm)'),
('28', 'Female', '58', '168'),
('33', 'Male', '', '188')]
जैसा कि ऊपर दिखाया गया है, आप pprint का उपयोग कर सकते हैं। एक बहुत अच्छा पुस्तकालय है जिसे सारणी कहा जाता है जिसका उपयोग सारणीबद्ध डेटा प्रदर्शित करने के लिए किया जा सकता है जैसा कि नीचे दिखाया गया है।
>>> from tabulate import tabulate
>>> data = [('Age', 'Gender', 'Weight (kg)', 'Height (cm)'), ('28', 'Female', '58', '168'), ('33', 'Male', '', '188')]
>>> print(tabulate(data[1:], headers=data[0]))
Age Gender Weight (kg) Height (cm)
----- -------- ------------- -------------
28 Female 58 168
33 Male 188
>>>
स्ट्रिंग्स के आरईपीआर (प्रतिनिधित्व) लिखते समय पायथन सिंगल कोट्स का समर्थन करता है। लेकिन आप बिना उद्धरणों के स्ट्रिंग उत्सर्जित करके और उन्हें स्वयं लपेटकर अपना खुद का लिख सकते हैं।
def my_pformat(table):
tupstr = [", ".join(f'"{s}"' for s in tup) for tup in table]
tupline = [f" ({tup})" for tup in tupstr]
return "\n".join(["["] + tupline + ["]"])
table = [('Age', 'Gender', 'Weight (kg)', 'Height (cm)'),
('28', 'Female', '58', '168'),
('33', 'Male', '', '188')]
print(my_pformat(table))
नतीजा
[
("Age", "Gender", "Weight (kg)", "Height (cm)")
("28", "Female", "58", "168")
("33", "Male", "", "188")
]
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।