[Python] PrettyTable Modülü Kullanımı

Merhaba, bu yazımda sizlere basit ama bir o kadar da kullanışlı bir modülü anlatıcam. Bu modülü anlamak için temel Python bilgisi yeterli olucaktır. Öncelikle bizim her yaptığımız program bir arayüze sahip olmayabilir, yani konsol ekranında çalışıyor olabilir. Eğer sizde benim gibi görselliğe önem veren biriyseniz bu modül konsol ekranında işinizi görücektir. Bu modül bizim basit ASCII tabloları yapmamıza olanak sağlıyor. Hadi bu modülü indirerek işe başlayalım. Konsol ekranını açarak şu komutları girin;

pip3 install PrettyTable

Kurulum gerçekleştikten sonra konsol ekranına şu komutu girip modülün dahil edilip edilmediğini kontrol edebilirsiniz.

pip3 list

Arkadaşlar ilk olarak prettytable modülümüzün içindeki PrettyTable sınıfını dahil ederek işe başlayalım. Sonrasında ise table isminde bir nesne oluşturalım bütün işlemleri bu nesne üstünden gerçekleştireceğiz.

from prettytable import PrettyTable
table = PrettyTable()

Şimdi ise yapıcağımız tablonun başlık isimlerini belirtmemiz gerekiyor. Örneğin film isme ve puan adında iki başlığımız yer alsın. Bu adları bir liste içinde bir methoda vermeliyiz, şu şekilde;

table.field_names = ["film_ismi","puan"]

Bu oluşturduğumuz başlıklara belli veriler vermemiz gerekli, yani satır ekliyoruz. Burada dikkat edilmesi gereken nokta ekliyeceğimiz satır bilgisini bir liste içinde vermektir. Listenin sıfırıncı elamanı film_ismi birinci elemanı ise puan olucak. Hadi tabloya üç adet film ve puan ekleyelim ve ekrana yazdıralım.

table.add_row(["Fermat's Room", 8.5])
table.add_row(["Yaşamın Şifresi", 8.0])
table.add_row(["Akıl Oyunları", 9.0])

print(table)

Karşımıza şu şekilde basit bir tablo çıkmakta. Güzel dimi 😀

tablo-1

Peki tablodan bir satır silmek istersek, unutmayın satır bilgileri sıfırdan başlamaktadı. Hadi birinci satırı silelim.

table.del_row(1)
print(x)

Tablomuzun çıktısı şu şekilde değişecektir.

tablo-2

Şu şekildede bütün satırları temizleyebilirsiniz.

table.clear_row()

Arkadaşlar şimdi ise, bir dosyadan bu verileri çekip nasıl tablo oluşturabiliriz buna bakalım. Bu noktada şuna dikkat etmeliyiz dosya uzantımız .csv formatında olmalıdır, bunun nedeni ise; bu dosyalarda veriler virgüller ile ayrılmış şekilde depolanıyor olmasıdır.  Genellikle Excel programında kullanılan bir dosya formatıdır. Şimdi .csv uzantılı bir dosya oluşturalım ve içerisine şu yazıları girelim.

"isim", "yas"
"yusuf", 13
"enes", 9
"cemil", 13

Öncelikle from_csv sınıfımızı dahil etmeliyiz, sonrasında ise bu dosya üstünde okuma işlemi yapmalıyız.

from prettytable import from_csv

with open("data.csv", "r") as file: 
     x = from_csv(file)
 
print(x)

Tablo görseli ise şu şekilde.

tablo-3

Dilerseeniz .html formatındaki dosyaları okuyup tabloya çevirebilirsiniz. HTML dosya içeriği şu yapıda olmalı;

<html>
  <body>
    <table>
    <tr>
      <th>Marka</th>
      <th>Model</th>
    </tr>

    <tr>
      <td>Iphone</td>
      <td>X</td>
    </tr>

    <tr>
      <td>Samsung</td>
      <td>S9</td>
    </tr>
 </table>
 </body>
</html>

Başlıklarınız <th></th> tagları içersinde satır bilgileri <td></td> tagları içerisinde olmasına dikkat edin. Bunların hepsi ise <table></table> tagının içerisinde olmalı. Bu dosya formatını okumak için ise şu işlemleri yapabilirsiniz.

from prettytable import from_html_one
 
with open("data.html", "r") as file: 
    html = file.read()
 
print(from_html_one(html))

Kodun çıktısı şu şekilde olucaktır.

tablo-4

Arkadaşlar şimdi de tablolarda verileri nasıl sıralayabiliriz ona bakalım. Öncelikle şöyle bir kod yazdım.

from prettytable import PrettyTable
from random import randint

table = PrettyTable()
table.field_names = ["sayılar"]

liste = [randint(1,100) for i in range(1,6)]

for i in liste:
    table.add_row([i])

print(table)

Bu algoritmada rastgele 1-100 arası sayı üreteceğiz ve bir listede depolayazağız bu liste üstünde gezerekte tek tek tabloya satırları ekleyeceğiz. Kod çıktıs şu şekilde;

tablo-5

Random’u aynı çıkanlar yorumlara yazsın :Dasdasd…

Şimdi ise bu verileri nasıl sıralarız ona bakalım. Methoda değer olarak başlık ismini veriyoruz.

table.sortby = "sayılar"
print(table)

Kodumuz şu şekilde küçükten büyüğe sıralanacaktır. Bu stringler içinde geçerlidir.

tablo-6

Sıralamayı terse çevirmek içinse şu methodu kullanmanız yeterli olucaktır.

table.reversesort = True

Artık biraz görsel açıdan güzelleştirebilir. Ne gibi? Verileri tabloda sağa yada sola dayamak. Yapmamız gereken align methoduna üstünde işlem yapmak istediğimiz bölüm başlığını giriyoruz ve sol (l) , sağ (r) yada ortala (c) diyerek değer veriyoruz.

x.align["film_ismi"] = "l"

Peki bütün başlıkları tek bir başlık altında toplamak istersek şu methodu kullanabiliriz ama bende çalışmadı 😦

table.get_string(title="Genel Baslik")

Satır ve sütun parçalamak isteyebiliriz bir tabloda dilediğim satırı ve sütunu gösterebiliriz şu methodlarala…

table.get_string(fields=["Sutun1", "Sutun2"]) #sütun, 1 ve 2. sütun

table.get_string(start=2, end=4) #satır, 2-4 arası

Benden bu kadar, yorumlarınızı bekliyorum 😀 Bu modülle konsol ekranınızı çoşturabilirsiniz 😀 Python modüllerini tanıtmaya devam edicem. İyi geceler, iyi çalışmalar…

Kaynak: https://ptable.readthedocs.io/en/latest/tutorial.html#miscellaneous-things

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s