ana sayfa > Python, Yazılım > rstab Modülü

rstab Modülü

Pazar, 14 Mar 2010

reStructuredText belgeleriyle haşır neşir olanların çok iyi bildiği gibi, rST tabloları oluşturmak tam bir eziyettir. Mesela şu tabloya bir bakın:

+----------+----------+----------+----------+
| İSİM     | SOYİSİM  | ADRES    | MESLEK   |
+==========+==========+==========+==========+
| Ferhat   | Gider    | İstanbul | Yazar    |
+----------+----------+----------+----------+
| Ahmet    | Erden    | Ankara   | Çevirmen |
+----------+----------+----------+----------+
| Mehmet   | Artır    | İzmir    | Çizer    |
+----------+----------+----------+----------+
| Kezban   | Güler    | Adana    | Mühendis |
+----------+----------+----------+----------+
| Selin    | Güleç    | Bursa    | Öğretmen |
+----------+----------+----------+----------+
| Selim    | Gelir    | İzmit    | Esnaf    |
+----------+----------+----------+----------+

Gördüğünüz gibi, rST tablosu oluşturmak için kol kuvvetini devreye sokmak gerekiyor. rST tablolarının bu durumu nedeniyle ben rST belgeleri hazırlarken olabildiğince tablo kullanmaktan kaçıyorum. Ama geçen gün, yakında istihza.com’a ekleyeceğim bir makale üzerinde çalışırken tablo oluşturmam gerekti. Ben de bunun üzerine bu sorunu kökünden çözecek bir şeyler yapmaya karar verdim ve “rstab” adını verdiğim bir modül yazdım.

rstab modülünü http://www.istihza.com/rstab/rstab-0.1/anakaynak/rstab-0.1.tar.gz adresinden indirebilirsiniz.

Bu modül, bir liste içine demet halinde girilmiş verilerden rST tabloları oluşturur. Nasıl mı? Mesela yukarıdaki tabloyu rstab modülüyle oluşturmak için şöyle bir betik yazmamız yeterli olacaktır:

from rstab import *
 
kişiler = [("İSİM", "Ferhat", "Ahmet", "Mehmet",
                    "Kezban", "Selin", "Selim"),
 
           ("SOYİSİM", "Gider", "Erden", "Artır",
                       "Güler", "Güleç", "Gelir"),
 
           ("ADRES", "İstanbul", "Ankara", "İzmir",
                     "Adana", "Bursa", "İzmit"),
 
           ("MESLEK", "Yazar", "Çevirmen", "Çizer",
                      "Mühendis", "Öğretmen", "Esnaf")
          ]
 
Tablo(kişiler).tablo_oluştur()

Gördüğünüz gibi, ilk iş olarak rstab modülünü içe aktarıyoruz. Kullanım kolaylığı açısından rstab modülünü from rstab import * şeklinde içe aktarabilirsiniz. Modülü içe aktardıktan sonra, tablo içeriğini oluşturacak verileri hazırlıyoruz. Yaptığımız şey esasında basit bir liste oluşturmaktan ibarettir. Her sütunu ayrı bir demet olarak gösterdiğimize dikkat edin. Mesela kişiler adlı listedeki ilk demetimiz şudur:

("İSİM", "Ferhat", "Ahmet", "Mehmet",
 "Kezban", "Selin", "Selim"),

Bu demetin ilk öğesi (yani “İSİM”), sütunun başlığı olacaktır. Geri kalan öğeler ise sütunun geri kalanını meydana getirecek.

Tablodaki sütun başlıklarını ve sütun içeriklerini yukarıdaki şablona göre oluşturabilirsiniz.

Tablo içindeki verileri hazırladıktan sonra şu satırı yazıyoruz:

Tablo(kişiler).tablo_oluştur()

Burada “rstab“ modülü içindeki “Tablo“ adlı sınıfın “tablo_oluştur()“ adlı fonksiyonunu çağırdık. Ayrıca “Tablo“ sınıfına parametre olarak, yukarıda oluşturduğumuz “kişiler“ adlı tabloyu verdiğimize dikkat edin.

Artık betiğimizi çalıştırabiliriz.

Yalnız unutmamamız gereken şey, rstab modülünün bir Python 3 betiği olduğudur. Dolayısıyla bu modülü çalıştırabilmek için Python’un 3.x sürümlerinden birini kullanmalısınız.

Yukarıdaki betiği deneme.py adlı bir dosyaya kaydettiğinizi varsayarsak, şöyle bir komut işimizi görecektir:

python3 deneme.py
Bu komutu verdiğinizde şöyle bir çıktı alacaksınız:
+----------+----------+----------+----------+
| İSİM     | SOYİSİM  | ADRES    | MESLEK   |
+==========+==========+==========+==========+
| Ferhat   | Gider    | İstanbul | Yazar    |
+----------+----------+----------+----------+
| Ahmet    | Erden    | Ankara   | Çevirmen |
+----------+----------+----------+----------+
| Mehmet   | Artır    | İzmir    | Çizer    |
+----------+----------+----------+----------+
| Kezban   | Güler    | Adana    | Mühendis |
+----------+----------+----------+----------+
| Selin    | Güleç    | Bursa    | Öğretmen |
+----------+----------+----------+----------+
| Selim    | Gelir    | İzmit    | Esnaf    |
+----------+----------+----------+----------+

Artık bu tabloyu kopyalayıp, rst belgelerinizde kullanabilirsiniz. Bu tablo, HTML çıktısında şöyle görünür:

İSİM SOYİSİM ADRES MESLEK
Ferhat Gider İstanbul Yazar
Ahmet Erden Ankara Çevirmen
Mehmet Artır İzmir Çizer
Kezban Güler Adana Mühendis
Selin Güleç Bursa Öğretmen
Selim Gelir İzmit Esnaf

Eğer tablo çıktısını komut satırından kopyalamak yerine bir dosyaya kaydetmek isterseniz şu komutu verebilirsiniz:

python3 deneme.py > tablo.txt

Bu komut, tabloyu tablo.txt adlı bir dosyaya kaydedecektir.

Modülle ilgili sorularınız için kistihza [at] yahoo [nokta] com adresinden bana ulaşabilirsiniz.

Python, Yazılım , , , , ,

  1. erdem
    Pazar, 14 Mar 2010 zamanında 23:58 | #1

    Ben de diyorum niye Py2 de hata veriyor :)

  2. Pazartesi, 15 Mar 2010 zamanında 01:54 | #2

    Bende makaleyi merak ettim. Acaba ne hakkında :)

  3. Pazartesi, 15 Mar 2010 zamanında 08:03 | #3

    @Melen, sen makaleyi kesin seveceksin… ;)

  4. Pazartesi, 15 Mar 2010 zamanında 08:03 | #4

    Artık yavaş yavaş Py3′e göç başladı… :)

  5. Pazartesi, 15 Mar 2010 zamanında 12:02 | #5

    @admin
    Güzel o zaman :)

  6. aycan
    Pazartesi, 15 Mar 2010 zamanında 16:51 | #6

    Beklediğim konular başılıyor galiba.

  7. Pazartesi, 15 Mar 2010 zamanında 17:16 | #7

    Evet. Araya sürekli başka işlerin girmesi yüzünden yavaş ilerliyor olsa da veritabanı programlama konusunu yazmaya başladım… :)

  8. kadas
    Perşembe, 25 Mar 2010 zamanında 15:46 | #8

    vuhuu sonunda modül anlatımları :D devamını bekleriz. Yeni başlayanlar için random u da anlata bilrisin :D

  1. şimdilik geri bağlantı yok