ট্যাবুলার ডেটা হিসাবে তালিকা মুদ্রণ


366

আমি পাইথনে বেশ নতুন এবং আমি এখন মুদ্রিত আউটপুটটির জন্য আমার ডেটা ফর্ম্যাট করার সাথে লড়াই করছি।

আমার কাছে একটি তালিকা রয়েছে যা দুটি শিরোনামের জন্য ব্যবহৃত হয় এবং একটি ম্যাট্রিক্স যা টেবিলের বিষয়বস্তু হওয়া উচিত। তাই ভালো:

teams_list = ["Man Utd", "Man City", "T Hotspur"]
data = np.array([[1, 2, 1],
                 [0, 1, 0],
                 [2, 4, 2]])

নোট করুন যে শিরোনামের নামগুলি একই দৈর্ঘ্যের নয়। যদিও ডেটা এন্ট্রিগুলি সমস্ত পূর্ণসংখ্যা হয়।

এখন, আমি এটি একটি টেবিল বিন্যাসে উপস্থাপন করতে চাই, এরকম কিছু:

            Man Utd   Man City   T Hotspur
  Man Utd         1          0           0
 Man City         1          1           0
T Hotspur         0          1           2

আমার একটা কুঁচি আছে যে এর জন্য অবশ্যই একটি ডেটা কাঠামো থাকতে হবে তবে আমি এটি খুঁজে পাচ্ছি না। আমি একটি অভিধান ব্যবহার করে এবং মুদ্রণের বিন্যাস করার চেষ্টা করেছি, আমি ইনডেন্টেশন সহ লুপগুলি চেষ্টা করেছি এবং স্ট্রিং হিসাবে মুদ্রণের চেষ্টা করেছি।

আমি নিশ্চিত যে এটি করার একটি খুব সহজ উপায় থাকতে হবে তবে আমি অভিজ্ঞতার অভাবে সম্ভবত এটি অনুপস্থিত।


1
+1, আমি গত রাতে কেবল একই জিনিসটি করার চেষ্টা করছিলাম। আপনি কি কেবল কমান্ড লাইনে মুদ্রণের চেষ্টা করছেন বা আপনি কোনও জিইউআই মডিউল ব্যবহার করছেন?
হেল্লাম্যাড

কমান্ড লাইনে কেবল মুদ্রণ করা হচ্ছে। তবে এটির জন্য ইউনিট-পরীক্ষার কেসটি পাস করা দরকার, সুতরাং এখানে ফর্ম্যাট করা বেশ গুরুত্বপূর্ণ।
hjweide



নোট করুন যে এখানে প্রয়োজনীয়তাটি বিশেষভাবে বিশেষায়িত, যেহেতু সারি এবং কলাম লেবেল একই। সুতরাং এই বিশেষ ক্ষেত্রে, অ্যাড-হক কোড এটি কত সহজ হতে পারে তার একটি দুর্দান্ত উদাহরণ। তবে এখানে অন্যান্য সমাধান আরও জেনেরিক টেবিল প্রদর্শনের জন্য ভাল better
nealmcb

উত্তর:


189

পাইথন ২.7 এর জন্য কিছু অ্যাড-হক কোড:

row_format ="{:>15}" * (len(teams_list) + 1)
print(row_format.format("", *teams_list))
for team, row in zip(teams_list, data):
    print(row_format.format(team, *row))

এটি নির্ভর করে str.format()এবং ফর্ম্যাট নির্দিষ্টকরণ মিনি-ভাষাতে


3
পাইথন 2.6 ব্যবহার করে যদি সারি_ফর্ম্যাটটিতে টিম_লিস্ট সূচক যুক্ত করতে মনে রাখবেন: সারি_ফর্ম্যাট = "{0:> 15} {1:> 15} {2:> 15}"
লুইস মুউজ

1
যদি শরীরে ডেটা শিরোনামের চেয়ে বড় হয় তবে আপনি ডেটার প্রথম সারির উপর ভিত্তি করে কলামের প্রস্থ সেট করতে পারেন। ডেটাতে টিয়ের জন্য [0]: সারি_ফর্ম্যাট + = "{: <" + স্ট্রিং (লেন (টি) +5) + "}"
মোরগান্টাসচুক

587

এই উদ্দেশ্যে কিছু হালকা এবং দরকারী পাইথন প্যাকেজ রয়েছে:

1. ট্যাবুলেট : https://pypi.python.org/pypi/tabulate

from tabulate import tabulate
print(tabulate([['Alice', 24], ['Bob', 19]], headers=['Name', 'Age']))
Name      Age
------  -----
Alice      24
Bob        19

ট্যাবুলেটে শিরোনাম এবং টেবিল বিন্যাস নির্দিষ্ট করার জন্য অনেকগুলি বিকল্প রয়েছে।

print(tabulate([['Alice', 24], ['Bob', 19]], headers=['Name', 'Age'], tablefmt='orgtbl'))
| Name   |   Age |
|--------+-------|
| Alice  |    24 |
| Bob    |    19 |

২.প্রিটটিবেবল : https://pypi.python.org/pypi/PrettyTable

from prettytable import PrettyTable
t = PrettyTable(['Name', 'Age'])
t.add_row(['Alice', 24])
t.add_row(['Bob', 19])
print(t)
+-------+-----+
|  Name | Age |
+-------+-----+
| Alice |  24 |
|  Bob  |  19 |
+-------+-----+

প্রাইটিবেলে সিএসভি, এইচটিএমএল, এসকিউএল ডাটাবেস থেকে ডেটা পড়ার বিকল্প রয়েছে। এছাড়াও আপনি ডেটা উপসেট নির্বাচন করতে পারবেন, সারণি সারণি এবং সারণী শৈলী পরিবর্তন করতে পারবেন।

৩. পাঠ্যযোগ্য : https://pypi.python.org/pypi/texttable able

from texttable import Texttable
t = Texttable()
t.add_rows([['Name', 'Age'], ['Alice', 24], ['Bob', 19]])
print(t.draw())
+-------+-----+
| Name  | Age |
+=======+=====+
| Alice | 24  |
+-------+-----+
| Bob   | 19  |
+-------+-----+

পাঠ্য টেবিলের সাহায্যে আপনি অনুভূমিক / উল্লম্ব সারিবদ্ধ, সীমানা শৈলী এবং ডেটা প্রকারগুলি নিয়ন্ত্রণ করতে পারেন।

4. টার্মটিবলস : https://github.com/nschloe/termtables

import termtables as tt

string = tt.to_string(
    [["Alice", 24], ["Bob", 19]],
    header=["Name", "Age"],
    style=tt.styles.ascii_thin_double,
    # alignment="ll",
    # padding=(0, 1),
)
print(string)
+-------+-----+
| Name  | Age |
+=======+=====+
| Alice | 24  |
+-------+-----+
| Bob   | 19  |
+-------+-----+

পাঠ্য টেবিলের সাহায্যে আপনি অনুভূমিক / উল্লম্ব সারিবদ্ধ, সীমানা শৈলী এবং ডেটা প্রকারগুলি নিয়ন্ত্রণ করতে পারেন।

অন্যান্য অপশন:

  • টার্মিনাল টেবিলগুলি স্ট্রিংয়ের তালিকার তালিকা থেকে টার্মিনাল / কনসোল অ্যাপ্লিকেশনগুলিতে সহজে টেবিলগুলি আঁকুন। মাল্টি-লাইন সারি সমর্থন করে।
  • Asciable Asciable বিল্ট-ইন এক্সটেনশন রিডার ক্লাসগুলির মাধ্যমে ASCII টেবিল ফর্ম্যাটগুলির বিস্তৃত পরিসরটি পড়তে এবং লিখতে পারে।

13
ডেটা-কেন্দ্রিক সিএলআই সরঞ্জাম তৈরির জন্য ট্যাবুলেটটি একটি খুব দরকারী সরঞ্জাম হিসাবে আমি পেয়েছি। এটি, ক্লিকের সাথে মিলিত (পাইপ ইনস্টল ক্লিক), এবং আপনি একটি বাস্তব স্টু যাচ্ছেন।
অ্যালেক্সবডু

4
এটি দুর্দান্ত, আপনাকে ধন্যবাদ। ব্যক্তিগতভাবে, আপনি এই তিনটির মধ্যে কোনটিকে পছন্দ করবেন?
জিম রায়নোর

জমকালো জবাব! PrettyTable ঠিক এতটাই ভাল - অন্য দুটি বিকল্পের মধ্যে নিখুঁত ভারসাম্য।
এডেজ


5
আমি সবেমাত্র প্রধান প্যাকেজগুলি এবং আইএমও "বিউটিফ্ল্যাটেবল" - সাথে খেলেছি, সেরা, রক্ষণাবেক্ষণ, ভাল এপিআই এবং ডকো, রঙিন জন্য সমর্থন। "পাঠ্যযোগ্য" - দুর্দান্ত, রক্ষণাবেক্ষণ, ভাল এপিআই তবে রঙিন ব্যবহারের সারণি প্রান্তিককরণের বাইরে ছুঁড়ে ফেলেছে। "টার্মিনাল টেবিলগুলি" - ভাল, কেবল কোড উদাহরণগুলির মাধ্যমে ডকো। "প্রেটি টেবিল" - ঠিক আছে, তবে পুরানো, টেবিলের 'শিরোনাম' আমার পক্ষে কাজ করে না। "ট্যাবুলেট" - ভাল, তবে কলাম অ্যালাইনমেন্ট coalignকীওয়ার্ডটি অফিসিয়াল পাইপি রিলিজে সমর্থিত নয়। "টেবিলপ্রিন্ট" - গড়, এপিআই জটিল, সাধারণ ব্যবহারের যথেষ্ট উদাহরণ নয় not
আবুলকা

79
>>> import pandas
>>> pandas.DataFrame(data, teams_list, teams_list)
           Man Utd  Man City  T Hotspur
Man Utd    1        2         1        
Man City   0        1         0        
T Hotspur  2        4         2        

6
এটি দেখতে খুব আশাব্যঞ্জক, ধন্যবাদ মনে হচ্ছে, তবে একেবারে প্রয়োজনের চেয়ে বেশি আমদানি করা লাইব্রেরি ব্যবহার না করেই এটি করার চেষ্টা করছি।
hjweide

26
কেবল আউটপুট ফর্ম্যাটিংয়ের জন্য পান্ডা ব্যবহার করা ওভারকিলের মতো মনে হয় (মূলধন হে উদ্দেশ্য)।
নীলস বোম

66
@ নীলস বম: আউটপুট বিন্যাসের জন্য আসুন, ডেটা বিশ্লেষণ এবং মডেলিংয়ের জন্য থাকুন :)
জেএফএস

30
@ জেএফএসবাতিস্টিয়ান আমার কাছে এটি আরও ভালো লেগেছে "আউটপুট ফর্ম্যাটিংয়ের জন্য আসুন, 10 মিনিটের ন্যুপি সংকলনের কারণে চিৎকার করে পালিয়ে যান" ;-)
নীলস বম

4
@ নিলস বম: pip install numpyবেশিরভাগ প্ল্যাটফর্মগুলিতে এখন বাইনারি চাকা ব্যবহার করে (কোনও সংকলন নেই) । স্পষ্টতই, অন্যান্য বাইনারি ইনস্টলেশন বিকল্পগুলি তার আগেও উপলব্ধ ছিল।
jfs

68

পাইথন আসলে এটি বেশ সহজ করে তোলে।

কিছুটা এইরকম

for i in range(10):
    print '%-12i%-12i' % (10 ** i, 20 ** i)

আউটপুট হবে

1           1           
10          20          
100         400         
1000        8000        
10000       160000      
100000      3200000     
1000000     64000000    
10000000    1280000000  
100000000   25600000000
1000000000  512000000000

স্ট্রিংয়ের মধ্যে থাকা% হ'ল মূলত একটি পালানোর চরিত্র এবং এরপরের অক্ষরগুলি অজগরকে বলে যে ডেটাটির ফর্ম্যাটটি কী ধরনের হওয়া উচিত। স্ট্রিংয়ের বাইরে এবং তার পরে থাকা% অজগরকে বলছে যে আপনি পূর্ববর্তী স্ট্রিংটিকে বিন্যাসের স্ট্রিং হিসাবে ব্যবহার করতে চান এবং নিম্নলিখিত ডেটাটি নির্দিষ্ট ফর্ম্যাটে রেখে দেওয়া উচিত।

এই ক্ষেত্রে আমি "% -12i" দুবার ব্যবহার করেছি। প্রতিটি অংশ ভাঙতে:

'-' (left align)
'12' (how much space to be given to this part of the output)
'i' (we are printing an integer)

দস্তাবেজগুলি থেকে: https://docs.python.org/2/library/stdtypes.html#string- ফর্ম্যাটিং


এই উত্তরটি আমাকে যা খুঁজছিল তা সন্ধান করতে ট্র্যাকে ফেলেছে! অজগর 3 এর জন্য, আমি এটি ব্যবহার করে শেষ করেছি print('%-20.2f' % position['deg'], '%-17.2f' % position['v2'])যেখানে .2ফ্লোটটির যথার্থতা নির্দিষ্ট করা হয়f
রস


9

যখন আমি এটি করি, আমি কীভাবে টেবিলটি ফর্ম্যাট করা যায় তার বিশদটির কিছুটা নিয়ন্ত্রণ রাখতে চাই। বিশেষত, আমি শিরোনাম কোষগুলির বডি কোষগুলির চেয়ে আলাদা ফর্ম্যাট করতে চাই এবং টেবিলের কলামের প্রস্থটি কেবল প্রতিটি প্রশস্ত হওয়া দরকার। এখানে আমার সমাধান:

def format_matrix(header, matrix,
                  top_format, left_format, cell_format, row_delim, col_delim):
    table = [[''] + header] + [[name] + row for name, row in zip(header, matrix)]
    table_format = [['{:^{}}'] + len(header) * [top_format]] \
                 + len(matrix) * [[left_format] + len(header) * [cell_format]]
    col_widths = [max(
                      len(format.format(cell, 0))
                      for format, cell in zip(col_format, col))
                  for col_format, col in zip(zip(*table_format), zip(*table))]
    return row_delim.join(
               col_delim.join(
                   format.format(cell, width)
                   for format, cell, width in zip(row_format, row, col_widths))
               for row_format, row in zip(table_format, table))

print format_matrix(['Man Utd', 'Man City', 'T Hotspur', 'Really Long Column'],
                    [[1, 2, 1, -1], [0, 1, 0, 5], [2, 4, 2, 2], [0, 1, 0, 6]],
                    '{:^{}}', '{:<{}}', '{:>{}.3f}', '\n', ' | ')

এখানে ফলাফল:

                   | Man Utd | Man City | T Hotspur | Really Long Column
Man Utd            |   1.000 |    2.000 |     1.000 |             -1.000
Man City           |   0.000 |    1.000 |     0.000 |              5.000
T Hotspur          |   2.000 |    4.000 |     2.000 |              2.000
Really Long Column |   0.000 |    1.000 |     0.000 |              6.000

8

আমি মনে করি এই আপনি যা খুঁজছেন হয়।

এটি একটি সহজ মডিউল যে শুধু টেবিল এন্ট্রি জন্য সর্বাধিক প্রয়োজন প্রস্থ নির্ণয় এবং তারপর মাত্র ব্যবহার এর rjust এবং ljust ডেটার একটি চমত্কার মুদ্রণ না।

আপনি যদি চান আপনার বাম শিরোনাম ডানদিকে প্রান্তিক করা এই কলটি পরিবর্তন করুন:

 print >> out, row[0].ljust(col_paddings[0] + 1),

53 লাইন দিয়ে:

 print >> out, row[0].rjust(col_paddings[0] + 1),

8

আমি জানি যে আমি পার্টিতে দেরি করেছি, তবে আমি এই জন্য একটি লাইব্রেরি তৈরি করেছি যা আমি মনে করি সত্যই সহায়তা করতে পারে। এটি অত্যন্ত সহজ, সে কারণেই আমার মনে হয় আপনার এটি ব্যবহার করা উচিত। একে টেবিলিট বলা হয়

বেসিক ব্যবহার

এটি ব্যবহার করতে, প্রথমে গিটহাব পৃষ্ঠায় ডাউনলোডের নির্দেশাবলী অনুসরণ করুন

তারপরে এটি আমদানি করুন:

import TableIt

তারপরে তালিকার একটি তালিকা তৈরি করুন যেখানে প্রতিটি অভ্যন্তরের তালিকাটি সারি থাকে:

table = [
    [4, 3, "Hi"],
    [2, 1, 808890312093],
    [5, "Hi", "Bye"]
]

তারপরে আপনাকে যা করতে হবে তা হ'ল এটি মুদ্রণ করতে হবে:

TableIt.printTable(table)

এটি আপনার প্রাপ্ত ফলাফল:

+--------------------------------------------+
| 4            | 3            | Hi           |
| 2            | 1            | 808890312093 |
| 5            | Hi           | Bye          |
+--------------------------------------------+

মাঠের নাম

আপনি চাইলে ক্ষেত্রের নামগুলি ব্যবহার করতে পারেন ( যদি আপনি ক্ষেত্রের নাম ব্যবহার না করে থাকেন তবে আপনাকে ব্যবহারফিল্ডনেমস = মিথ্যা বলতে হবে না কারণ এটি ডিফল্টরূপে সেট করা আছে ):


TableIt.printTable(table, useFieldNames=True)

এটি থেকে আপনি পাবেন:

+--------------------------------------------+
| 4            | 3            | Hi           |
+--------------+--------------+--------------+
| 2            | 1            | 808890312093 |
| 5            | Hi           | Bye          |
+--------------------------------------------+

এর অন্যান্য ব্যবহার রয়েছে, উদাহরণস্বরূপ আপনি এটি করতে পারেন:

import TableIt

myList = [
    ["Name", "Email"],
    ["Richard", "richard@fakeemail.com"],
    ["Tasha", "tash@fakeemail.com"]
]

TableIt.print(myList, useFieldNames=True)

তা থেকে:

+-----------------------------------------------+
| Name                  | Email                 |
+-----------------------+-----------------------+
| Richard               | richard@fakeemail.com |
| Tasha                 | tash@fakeemail.com    |
+-----------------------------------------------+

অথবা আপনি করতে পারেন:

import TableIt

myList = [
    ["", "a", "b"],
    ["x", "a + x", "a + b"],
    ["z", "a + z", "z + b"]
]

TableIt.printTable(myList, useFieldNames=True)

এবং এটি থেকে আপনি পাবেন:

+-----------------------+
|       | a     | b     |
+-------+-------+-------+
| x     | a + x | a + b |
| z     | a + z | z + b |
+-----------------------+

রং

আপনি রঙ ব্যবহার করতে পারেন।

আপনি রঙ বিকল্পটি ব্যবহার করে রং ব্যবহার করুন ( ডিফল্টরূপে এটি কোনওটিতে সেট করা নেই ) এবং আরজিবি মান উল্লেখ করে।

উপরের উদাহরণটি ব্যবহার করে:

import TableIt

myList = [
    ["", "a", "b"],
    ["x", "a + x", "a + b"],
    ["z", "a + z", "z + b"]
]

TableIt.printTable(myList, useFieldNames=True, color=(26, 156, 171))

তারপরে আপনি পাবেন:

এখানে চিত্র বর্ণনা লিখুন

অনুগ্রহ করে নোট করুন যে মুদ্রণের রঙগুলি আপনার পক্ষে কাজ না করে তবে এটি অন্যান্য লাইব্রেরিগুলির মতো ঠিক একই কাজ করে যা রঙিন পাঠ্য প্রিন্ট করে। আমি পরীক্ষা করেছি এবং প্রতিটি একক রঙের কাজ করে। ডিফল্টটি ব্যবহার করা হলে নীলটি যেমন হয় তেমন গণ্ডগোল হয় না34m এএনএসআই এস্কেপ ক্রম (যদি আপনি এটি না জানেন তবে এটি কোনও ব্যাপার নয়)। যাইহোক, এগুলি সমস্ত বাস্তব থেকে আসে যে প্রতিটি রঙ সিস্টেম ডিফল্টের চেয়ে আরজিবি মান।

অধিক তথ্য

আরও তথ্যের জন্য গিটহাব পৃষ্ঠাটি পরীক্ষা করুন


টেবিলটি এটি একটি দুর্দান্ত সরঞ্জাম। সাধারণ কিন্তু শক্তিশালী। আমার মনে হয় কেবলমাত্র অসুবিধাটি টেবিলটি একটি লাইসেন্স ঘোষণা করেনি
এন্ডেল_ঝেঞ্জো

নিবন্ধন করুন অনেক ধন্যবাদ, আমি যত তাড়াতাড়ি সম্ভব এটিতে কাজ করব!
বিস্টকোডার

@ এন্ডেল_ঝেঁবো, আমি জানি কিছুদিন হয়ে গেছে, তবে শেষ পর্যন্ত আমি প্রকল্পটির জন্য লাইসেন্স দিয়েছি।
বিস্টকোডার

7

খাঁটি পাইথন 3

def print_table(data, cols, wide):
    '''Prints formatted data on columns of given width.'''
    n, r = divmod(len(data), cols)
    pat = '{{:{}}}'.format(wide)
    line = '\n'.join(pat * cols for _ in range(n))
    last_line = pat * r
    print(line.format(*data))
    print(last_line.format(*data[n*cols:]))

data = [str(i) for i in range(27)]
print_table(data, 6, 12)

ছাপবে

0           1           2           3           4           5           
6           7           8           9           10          11          
12          13          14          15          16          17          
18          19          20          21          22          23          
24          25          26

5

এটি করার একটি সহজ উপায় হ'ল সমস্ত কলামের উপর লুপ করা, তাদের প্রস্থ পরিমাপ করা, সর্বাধিক প্রস্থের জন্য একটি সারি_পদ্ধতি তৈরি করা এবং তারপরে সারিগুলি মুদ্রণ করা। এটি আপনি যা খুঁজছেন ঠিক তা নয় , কারণ এই ক্ষেত্রে আপনাকে প্রথমে আপনার শিরোনামটি টেবিলের ভিতরে রাখতে হবে, তবে আমি ভাবছি এটি অন্য কারও পক্ষে কার্যকর হতে পারে।

table = [
    ["", "Man Utd", "Man City", "T Hotspur"],
    ["Man Utd", 1, 0, 0],
    ["Man City", 1, 1, 0],
    ["T Hotspur", 0, 1, 2],
]
def print_table(table):
    longest_cols = [
        (max([len(str(row[i])) for row in table]) + 3)
        for i in range(len(table[0]))
    ]
    row_format = "".join(["{:>" + str(longest_col) + "}" for longest_col in longest_cols])
    for row in table:
        print(row_format.format(*row))

আপনি এটি এর মতো ব্যবহার করুন:

>>> print_table(table)

            Man Utd   Man City   T Hotspur
  Man Utd         1          0           0
 Man City         1          1           0
T Hotspur         0          1           2

3

নীচের ফাংশনটি পাইথন 3 (সম্ভবত পাইথন 2) এর সাথে অনুরোধকৃত সারণী তৈরি করবে (নিম্পির সাথে বা ছাড়াই)। আমি দীর্ঘতম দলের নামের সাথে মেলে প্রতিটি কলামের প্রস্থ নির্ধারণ করেছি। আপনি যদি প্রতিটি কলামের জন্য দলের নামের দৈর্ঘ্যটি ব্যবহার করতে চান তবে আপনি এটি সংশোধন করতে পারেন তবে আরও জটিল হবে।

নোট: পাইথন 2 সরাসরি সমতুল্য জন্য আপনি প্রতিস্থাপন করতে পারে zipসঙ্গে izipitertools থেকে।

def print_results_table(data, teams_list):
    str_l = max(len(t) for t in teams_list)
    print(" ".join(['{:>{length}s}'.format(t, length = str_l) for t in [" "] + teams_list]))
    for t, row in zip(teams_list, data):
        print(" ".join(['{:>{length}s}'.format(str(x), length = str_l) for x in [t] + row]))

teams_list = ["Man Utd", "Man City", "T Hotspur"]
data = [[1, 2, 1],
        [0, 1, 0],
        [2, 4, 2]]

print_results_table(data, teams_list)

এটি নিম্নলিখিত সারণি উত্পাদন করবে:

            Man Utd  Man City T Hotspur
  Man Utd         1         2         1
 Man City         0         1         0
T Hotspur         2         4         2

আপনি যদি উল্লম্ব লাইন বিভাজক রাখতে চান তবে আপনি এটির " ".joinসাথে প্রতিস্থাপন করতে পারেন" | ".join

তথ্যসূত্র:


2

আমি তালিকাটি লুপ করার চেষ্টা করব এবং আপনার পছন্দসই ডেটা উপস্থাপন করার জন্য একটি সিএসভি ফর্ম্যাটর ব্যবহার করব।

আপনি সীমানা হিসাবে ট্যাব, কমা বা অন্য কোনও চর নির্দিষ্ট করতে পারেন।

অন্যথায়, কেবল তালিকাটি লুপ করুন এবং প্রতিটি উপাদানগুলির পরে "\ t" মুদ্রণ করুন

http://docs.python.org/library/csv.html


এটি আমার প্রাথমিক প্রচেষ্টা ছিল, এটি সম্ভবত করা যেতে পারে তবে ফর্ম্যাটিংটি নিখুঁত করার জন্য এটি অনেক প্রচেষ্টা বলে মনে হচ্ছে।
hjweide

2

আমি এটি সহজ কলামগুলিকে আউটপুট দেওয়ার উপায় খুঁজছি। আপনার যদি কেবল নো-ফাস কলামগুলির প্রয়োজন হয় তবে আপনি এটি ব্যবহার করতে পারেন:

print("Titlex\tTitley\tTitlez")
for x, y, z in data:
    print(x, "\t", y, "\t", z)

সম্পাদনা: আমি যথাসম্ভব সহজ হওয়ার চেষ্টা করছিলাম এবং এর ফলে টিম তালিকাটি ব্যবহার না করে ম্যানুয়ালি কিছু কাজ করেছি। ওপির আসল প্রশ্নটিতে সাধারণীকরণ করতে:

#Column headers
print("", end="\t")
for team in teams_list:
    print(" ", team, end="")
print()
# rows
for team, row in enumerate(data):
    teamlabel = teams_list[team]
    while len(teamlabel) < 9:
        teamlabel = " " + teamlabel
    print(teamlabel, end="\t")
    for entry in row:
        print(entry, end="\t")
    print()

Ouputs:

          Man Utd  Man City  T Hotspur
  Man Utd       1       2       1   
 Man City       0       1       0   
T Hotspur       2       4       2   

তবে এটি আর উত্তরগুলির চেয়ে আর সহজ বলে মনে হচ্ছে না, সম্ভবত যে বেনিফিটটির জন্য এটি আর কোনও আমদানির প্রয়োজন হয় না। তবে @ ক্যাম্পকিথের উত্তর ইতিমধ্যে তা পূরণ করেছে এবং এটি আরও শক্তিশালী কারণ এটি বিভিন্ন ধরণের লেবেলের দৈর্ঘ্য পরিচালনা করতে পারে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.