2016-04-05 19 views
0

10 satır ve 3 sütun içeren bir .txt dosyam var, tüm sekmeler sınırlandı. Sütunlarda sayı veya a bulunur. Dosyanın her satırında ayrıştırmak istiyorum ve nerede? sütun ile ilgili belirli bir işlevi çağırmak için bulunur içinde bulunur. Ben üç fonksiyon var yani eğer? sütun 1'de bulunur, daha sonra function_a çağrılır, eğer sütun 2'de bulunursa o zaman function_b çağrılır ve eğer sütun 3'te bulunursa function_c çağrılır.Bir dosyada ayrıştırma

for line in fileinput.readlines(): 
    print(line.split("?")) 

ama adlandırılan belirli bir işlev nasıl emin değilim:

Bu çalışıyorum baktım.

+0

Nasıl bir sütun tanımlarsınız? Sekme ('\ t') ile bölünmeli, dönüşü bölen parçaların üzerinde yinelemeniz gerekir, bunların içinde'? 'Olanı bulun ve sonra işlevinizi çağırın. –

cevap

0

Sen o satırın her bir sütunun değerini almak için sınırlayıcı üzerinde bölme edilmelidir:

for line in fileinput.readlines(): 
    a, b, c = line.split('\t')  # Variable unpacking; assumes each line has three columns 
    if a == '?': 
     function_a() 
    if b == '?': 
     function_b() 
    if c == '?': 
     function_c() 

Yoksa iğrenç ve çirkin biri gömlekleri bir hayranı iseniz:

[(function_a, function_b, function_c)[line.split('\t').index('?')]() for line in fileinput.readlines()] 
0

Bu Yardımcı olabilir:

def column_a(line): 
    print 'first column in line', line 

def column_b(line): 
    print 'second column in line', line 

def column_c(line): 
    print 'third column in line', line 

funcs = [column_a, column_b, column_c] 

with open('input.txt') as fileinput: 
    for line in fileinput.readlines(): 
     line = line.strip().split('\t') 
     for i, item in enumerate(line): 
      if item == '?': 
       funcs[i](line) 
İlgili konular