繁体   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