簡體   English   中英

如何使用python從csv文件中讀取字符串下的特定列?

[英]How to read specific column under a string from csv file using python?

我正在運行系統性能測試,我需要檢查CSV文件中的測試結果。 例如,我的test.csv文件共享如下:

https://docs.google.com/spreadsheets/d/1lUldk4N_5kEAETWdd2B5-x0UOpA_O0aus7x49fEqnPk/edit?usp=sharing

請注意,結果“PASS”或“FAIL”將是一個超鏈接。

問題:我需要檢查是否通過了driverproblem測試。 例如,如果我運行100個循環,則deviceproblem下的結果將列出100次。 如果在100個循環中甚至有1個失敗,則認為測試失敗。

我能夠在“driverproblem”字段下獲取一行的值(結果),但是我得到的結果是行中存在的所有其他字段的超鏈接而不是一個字段。

有沒有辦法,我可以在字段中獲得結果“PASS”或“FAIL”:“driverproblem”或“Devicemanager”或“Crash”?

我試過以下:

with open(filename, 'r') as csv_file:
for index,row in enumerate(csv_file):
        if "driverproblem" in row.split(','):
            for i in range(10):
                line = csv_file.next().split()
                a= line[2].split(',')
                print a

但我得到的結果如下:

['PASS:Basictest“”)“','”= HYPERLINK(“”.. \\ .. \\ Reports \\ testreport_03-20-19-07-37-01 \\ _ 1.1.1_test_os \\ Driver_info.xml“”',' “”PASS“”)“','”= HYPERLINK(“”.. \\ .. \\ Reports \\ testreport_03-20-19-07-37-01 \\ 1.1.1_TEST_SYS \\ drivertest_Log_Delta.xml“”','“”通過“”)“','”= HYPERLINK(“”.. \\ .. \\ Reports \\ testreport_03-20-19-07-37-01 \\ systemtestlogss \\ systemtestlogs.csv“”','“”PASS“”) “','”= HYPERLINK(“”.. \\ .. \\ Reports \\ testreport_03-20-19-07-37-01 \\ systemtestlogss \\ systemtestlogs.csv“”','“”PASS“”)“',' “= HYPERLINK(”“.. \\ .. \\ Reports \\ testreport_03-20-19-07-37-01 \\ systemtestlogss \\ systemtestlogs.csv”“','”“PASS:已連接(通過']

而我只需要字段""=HYPERLINK(""..\\\\..\\\\Reports\\\\testreport_03-20-19-07-37-01\\\\1.1.1_TEST_SYS\\\\drivertest_Log_Delta.xml""', '""PASS"")"在csv文件中的”Drivertest“字段下。

嘗試這個:

with open("test.csv", 'r') as csv_file:
        arr = []
        crash = []
        devicemanager = []
        for row in csv_file:                              
                rowarr = row.split(',')
                arr.append(rowarr)
                devicemanager.append(rowarr[5])
                crash.append(rowarr[7])

輸出:

 ['\\n', '\\n', '\\n', '\\n', '\\n', '\\n', 'Crash\\n', 'PASS\\n', 'NA'] ['', '', '', '', '', '', 'Devicemanager', 'PASS', 'NA'] 

您可以遍歷列表崩潰和設備管理器以查找字段PASS和FAIL。 請注意,這是test.csv的第5列和第7列。

Total No Of Cycles,2,,,,,,
Passed Cycles,2,,,,,,
Failed Cycles,0,,,,,,
Ignored Cycles,0,,,,,,
,,,,,,,
,,,,,,,
Cycle Number,Cycle PASS/FAIL,Expected State,Test,Driver problem,Devicemanager,Memory Dump,Crash
1,PASS,S4,PASS:S4,PASS,PASS,PASS,PASS
2,PASS,S4,PASS:S4,NA,NA,NA,NA

棄用:Python 2.7將於2020年1月1日到期。請升級您的Python,因為在該日期之后將不再維護Python 2.7。 來源:repl.it

對於更干凈的版本,請使用csv模塊 - 使用它編寫代碼會更快:

import csv

csv_file_path = 'test.csv'
csvFile = open(csv_file_path,'r')
csvrdr = csv.reader(csvFile, delimiter=',')
devicemanager = []
crash = []
for row in csvrdr:
    devicemanager.append(row[5])
    crash.append(row[7])


print(crash)
print(devicemanager)

輸出:

 ['', '', '', '', '', '', 'Crash', 'PASS', 'NA'] ['', '', '', '', '', '', 'Devicemanager', 'PASS', 'NA'] 

這兩個示例都適用於python 2和3,因此您應該考慮升級到python 3,因為python 2已被棄用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM