2017-01-23 2 views
-4

У меня есть файл CSV, I 2 вещи из него:Как получить определенную строку в CSV-файле и избежать дублирования?

  1. В столбце B мне нужно получить только содержимое с "ERROR".

  2. После того, как это было сделано, мне нужно получить всю информацию из столбца G, избегая дублирования.

Пример:

## Level ## ## Message ## 

Error  ---------------  blah blah 


----------

Я пытался использовать PowerShell, но Python будет также принято: не

Param($Work) 

if (!$Work) { 
    powershell -NoExit -File $MyInvocation.MyCommand.Path 1 
    return 
} 

Select-String -pattern "ERROR" -path .\log.log 
+2

Пожалуйста, редактировать и форматировать почту так, чтобы CSV содержит разумные выборочные данные. Добавьте как отрицательные, так и положительные результаты. – vonPryz

ответ

0

Нет слишком уверены, что индексы столбцов для столбца 'B' и ' g ', но надеюсь, что это поможет.

Вы можете прочитать больше о обработке CSV в documentation

import csv 

#where the final answer will be 
extracted_info = [] 

with open('target.csv', 'r') as fd: 
    csv_reader = csv.reader(fd) 

    #Skip header 
    next(csv_reader, None) 

    #go through all rows 
    for row in csv_reader: 

     #Check if column b (looks like column 1?) 
     if (row[0] == "ERROR"): 
      #Get information from column 'G' 
      extracted_info.append(row[3]) 

#Get unique values only by casting to set then re-casting to list 
extracted_info = list(set(extracted_info)) 
0

попробовать это

import-csv "c:\temp\youfile.csv" | where Level -eq 'Error' | select ColumnNameForG -Unique 
Смежные вопросы