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.
istihza Python, Yazılım python 3.x, Python3, reStructuredText, rst, rstab, tablo
Son Yorumlar