2016-11-08 39 views
-3

我想要做的應該是這麼簡單,編寫一個程序,該程序逐行讀取CSVtxt文件並查找具有多個元素等於零,然後突出顯示這些行並保存突出顯示的CSV文件的新版本。 我有一個CSV文件是這樣的:在Python中的每個rwo CSV文件中查找元素'0123'

enter image description here

我不知道如何CSV文件,以及如何改變該行的顏色的每一行中找到elements = 0。我不知道是否有辦法保存更改後的CSV文件的副本。

if self.EnableCalibration.IsChecked(): 
    try: 
     ImportedFile = open('some.csv', 'rb') 
     CSVReading= ImportedFile.read(_MAX_LUNGHEZZA_FILE) 
     Lenght_CSVReading = len(CSVReading) 
     csvFileArray = [] 
     for row in csv.reader(ImportedFile, delimiter=' '): 
      csvFileArray.append(row) 
      if TWO_Elements == 0: ? 
       Highlight_Row? # this is not a string or python command 
       csvFileArray.next() # go to the next row 
      if CSVReading.split(-1): # end of csv file 
        csvSave= csv.writer(CSVReading) #to Save    
     ImportedFile.close()   
else: 
    CSVReading = None 
    Lenght_CSVReading = 0 
+1

你認爲'突出顯示一行'在CSV文件中工作嗎?順便說一句,通常是普通的純文本文件。 – usr2564301

+0

這就是爲什麼我在這裏問,它不是一個python命令,我只是想顯示我需要更改行 – J2015

+0

問題是,沒有辦法突出.txt(或csv的文件)文件... Python或不是python。 您的CSV文件有多大?我肯定會使用熊貓這個,除非你有很好的理由不是太 –

回答

0

也許變量TWO_Elements是一個字符串,那麼你的代碼:

if TWO_Elements == 0: ? 

是比較 「0」 == 0:? - > FALSE

嘗試投:

if int(TWO_Elements) == 0: 
+0

two_element就是一個例子 – J2015

+0

很確定他在問如何檢查該行中是否有多個零 –

0

如果你都OK使用熊貓,我會用下面的代碼:

首先,CSV加載到數據幀:

import pandas as pd 
df = pd.read_csv(_MAX_LUNGHEZZA_FILE) 

這裏,我們來看一個datafame的虛擬示例:

A B C D E 
0 5 0 1 0 5 
1 2 1 4 3 5 
2 5 1 4 4 3 
3 2 1 0 2 5 

然後讓我們創建一個新列,「無效」,這將是True如果該行中一個以上的元素具有零值:

df['invalid'] = df.apply(lambda x: True if (x == 0).sum() > 1 else False, axis=1) 

>df 

    A B C D E invalid 
0 5 0 1 0 5 True 
1 2 1 4 3 5 False 
2 5 1 4 4 3 False 
3 2 1 0 2 5 False 

分解了一下,適用於我這樣做基本上與做相同:

more_than_one_zero = (df == 0).sum(axis=1) > 1 

>more_than_one_zero 
0  True 
1 False 
2 False 
3 False 
dtype: bool 

df[more_than_one_zero, 'invalid'] = True 
df[~more_than_one_zero, 'invalid'= False