SORU
6 ŞUBAT 2011, Pazar


Python sabit genişlik dosyaları ayrıştırma verimli şekilde

Sabit genişlik hatları tutan ayrıştırma dosyaları etkili bir yol bulmak için çalışıyorum. İlk 20 karakter bir sütun, 21:30 da başka bir temsil. örnek: Hadi hattı 100 karakter tutar varsayalım. Çeşitli bileşenleri içine bir satır ayrıştırmak için etkili bir yol ne olabilir?

String satır başına Dilimleme kullanabilirim, ama çirkin eğer çizgi büyük ... diğer hızlı yöntem ise biraz?

CEVAP
6 ŞUBAT 2011, Pazar


Eğer bu etkili olduğundan emin değilim, ama okunabilir Dilimleme elle yapmak yerine) olmalıdır. Bir dize ve sütun uzunlukları alır, ve bu nedenle döndüren bir fonksiyon slices tanımlanmış. Bir jeneratör yaptım, çok uzun satırlar, dizeleri geçici bir liste oluşturmak değil.

def slices(s, *args):
    position = 0
    for length in args:
        yield s[position:position   length]
        position  = length

Örnek

In [32]: list(slices('abcdefghijklmnopqrstuvwxyz0123456789', 2))
Out[32]: ['ab']

In [33]: list(slices('abcdefghijklmnopqrstuvwxyz0123456789', 2, 10, 50))
Out[33]: ['ab', 'cdefghijkl', 'mnopqrstuvwxyz0123456789']

In [51]: d,c,h = slices('dogcathouse', 3, 3, 5)
In [52]: d,c,h
Out[52]: ('dog', 'cat', 'house')

Ama bir jeneratör avantajı, eğer tüm sütunları aynı anda ihtiyacın olursa kayıp olduğunu düşünüyorum. Tek tek sütunlar üzerinde işlem yapmak istediğiniz zaman size bir yarar olabilir, bir döngü demek.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Flash CS6 Video Tutorials for Beginners (Actionscript 3 Gaming)

    Flash CS6 Vi

    14 EYLÜL 2012
  • jedimasterkyle

    jedimasterky

    11 ŞUBAT 2006
  • Submissions101

    Submissions1

    23 ŞUBAT 2007