2016-04-13 12 views
1

Şimdiye kadar ancak benim toplam miktardan ödenen miktar çıkarmak için nasıl bilemiyorum Python .txt dosyanın belirli bölümlerini yazdırmak başarmış ve Daha sonra her sütundan seçkin değeri ekleyin.Ben .txt dosyasından var iki değeri çıkarmak nasıl

import csv 

FILE_NAME = "paintingJobs.txt" #I use this so that the file can be used easier 
COL_HEADERS = ['Number', 'Date', 'ID', 'Total', 'Status', 'Paid'] 
NUM_COLS = len(COL_HEADERS)#This will insure that the header of each column fits into the length of the data 

# read file once to determine maximum width of data in columns 
with open(FILE_NAME) as f: 
    reader = csv.reader(f, delimiter=',') 
    # determine the maximum width of the data in each column 
    max_col_widths = [len(col_header) for col_header in COL_HEADERS] 
    for columns in reader: 
     for i, col in enumerate(columns): 
      if "A" in columns and int(columns[5]) < int(columns[3]): 
       max_col_widths[i] = max(max_col_widths[i], len(repr(col))) 
    # add 1 to each for commas 
    max_col_widths = [col_width+1 for col_width in max_col_widths] 

# read file second time to display its contents with the headers 
with open(FILE_NAME) as f: 
    reader = csv.reader(f, delimiter=',') 
    # display justified column headers 
    print(' ' + ' '.join(col_header.ljust(max_col_widths[i]) 
          for i, col_header in enumerate(COL_HEADERS))) 
    # display justified column data 
    for columns in reader: 
     if "A" in columns and int(columns[5]) < int(columns[3]): 
      print(columns)` 

Bu şimdiye kadar sonuç:

Number Date   ID  Total Status Paid 
['E5345', '22/09/2015', 'C106', '815', 'A', '400'] 
['E5348', '23/09/2015', 'C109', '370', 'A', '200'] 
['E5349', '25/09/2015', 'C110', '480', 'A', '250'] 
['E5353', '28/09/2015', 'C114', '272', 'A', '200'] 
['E5355', '29/09/2015', 'C116', '530', 'A', '450'] 
['E5363', '01/10/2015', 'C124', '930', 'A', '500'] 
['E5364', '02/10/2015', 'C125', '915', 'A', '800'] 
['E5367', '03/10/2015', 'C128', '427', 'A', '350'] 
['E5373', '10/10/2015', 'C134', '1023', 'A', '550'] 

Ne ben toplam farkı ve Verilerin benziyor ödenen

+0

soru mu o kod blob ile ilgisi var, veya sorunun niteliği gerçek programından ayrılabilen? Öyleyse, lütfen bunu yapın ve [en az bir örnek] sağlayın (http://stackoverflow.com/help/mcve). – timgeb

+0

Ya da başka bir deyişle: başlık basit bir sorudur, bu soru neden bu kadar karmaşıktır? – timgeb

+0

Tamam şimdiye kadar ben şimdi ben ben bilgi olmaktan bile –

cevap

0

olan yeni bir sütun eklemek yapmak istediğim dizeler olarak depolanıyor. Onları tamsayıya değiştirmeyi denediniz mi? Bunu böyle yaparsın. Farz edelim ki, biz bu gibi tam sayılara dönüştürebilirsiniz.

x=int(x) 

y=int(x) 

Ardından bunları eklemede sorun yaşamanız gerekir.

+0

kaçırmadan kodunu aşağı kısaltmak için bir yol bulamıyorum 4 sütunda –

0

Ne istediğini yapmalıyım Dosyanda blok için son basit bir değişiklik burada senin sütun genişliği boyutlandırma yaklaşımı hurdaya dönerken ettik. Sadece # display justified column data'dan sonra her şeyi değiştirin. Toplam ve Ücretli tutarlar tamsayılar yapma

for row in reader: 
    total = int(row[3]) 
    paid = int(row[5]) 
    if 'A' in row[4] and paid < total: 
     print('\t'.join((_ for _ in row)), total - paid) 

biraz daha çalışma yeni verileri görüntülemek için bir yol olduğunu bulmak oldukça basittir. Prensipte - -

+0

Dediğim gibi yaptım ancak bir G/Ç hatasıyla karşılaştım: ValueError: Kapalı dosyada G/Ç işlemi. –