2017-05-27 46 views
0

在這裏得到了一點問題。Python的 - 將CSV文件 - lenght的obiect

for row in reader: 
    dane_wejsciowe.append(row) 

我有一些* .csv文件我想轉換我的行爲轉換怪異...... 上面的函數採取一切需要的列到一個數組,之後我打電話的那些列數的長度它:

for line in dane_wejsciowe: 
    if len(line['Mnemonik']) > len_mnemonik: 
     len_mnemonik += 1 

之後,我打印記錄print(' - Mnemonik: ' + str(len_mnemonik)),結果是22但最長的一個是BEUS_EnergyDriveAvgDist包含_,我懷疑它不包括特殊字母

和我的「愚蠢」的想法將其打印到文件是

if len(i['Mnemonik']) < len_mnemonik: 
     a = len_mnemonik - len(i['Mnemonik']) + 1 
    else: 
     a = 1 
    jsfile.write(i['Mnemonik']), 
    jsfile.write((' ')*a), 

ANY1有更好的主意,這樣做呢? :)

+0

對不起,沒有指定的問題。我需要用一些空格來打印它,以使它在列中更好。這就是爲什麼我還有其他:a = 1,因爲如果腳本碰到最長的那個,那麼仍然必須有一個空格 - 製作一個列。 –

回答

0
if len(line['Mnemonik']) > len_mnemonik: 
    len_mnemonik += 1 

我不知道爲什麼你認爲上面的代碼將最終給你的len_mnemonik最大值,尤其是+= 1部分。相反,你應該做的:

if len(line['Mnemonik']) > len_mnemonik: 
    len_mnemonik = len(line['Mnemonik']) 

或:

len_mnemonik = max(len_mnemonik, len(line['Mnemonik'])) 

(無if語句)

+0

的Cuz它在一個循環'在dane_wejsciowe行: 如果len(行[ 'Mnemonik'])> len_mnemonik: len_mnemonik + = 1' –

+1

@OskarGarczyński我知道這是一個循環,但是你的邏輯沒有意義。如果CSV中有兩行,那麼'len_mnemonik + = 1'只會發生兩次(或更少),所以'len_mnemonik'最後最多隻有2行。 –

1

看來你使用csv.reader()收集每一行,它會自動解析每一行到一個列表在命令中使用指定的分隔符(默認爲逗號)。因此,您的變量dane_wejsciowe是列表的列表(?),其中每個外部元素(例如,dane_wejsciowe[0])是CSV文件的一行,並且每個內部元素(例如dane_wejsciowe[0][0])是該行CSV中的一個單元格。因此,您的len()==22與文本BEUS_EnergyDriveAvgDist無關,但會告訴您CSV中的列數。