如何仅在另一个字段具有特定值时从CSV中的每条记录中提取字段

2024-09-29 22:01:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含1000行的CSV,比如:

server1.com, rec2, rec3, rec4, rec5, rec6, OK
server2.com, rec2, rec3, rec4, rec5, rec6, FAULT
server3.com, rec2, rec3, rec4, rec5, rec6, OK

有些字段确实包含逗号,并用双引号分隔。你知道吗

如果每个记录的第7个字段的值为OK,那么如何从该记录中提取第一个字段。所以,在上面的例子中,我会得到一个包含

server1.com
server3.com

我已经设法让它工作了:

import csv

with open('file.csv', 'rb') as csvfile:
    linereader = csv.reader(csvfile, delimiter=',', quotechar='"')
    for row in linereader:
        if row[6] == "OK":
            print row[0]         

谢谢你的建议。你知道吗


Tags: csvcsvfilecom记录okrowserver1rec2
3条回答

用grep和sed试试这个:

grep "OK$" yourfile | sed 's/,.*//'
server1.com
server3.com 

或awk:

awk -F, '/OK$/{print $1}' yourfile
server1.com
server3.com

或纯sed:

sed -n '/OK$/{
    s/,.*//
    p
}' yourfile

如果最后一列为“确定”,则打印第1列:

awk -F, '$NF=="OK"{print $1}' file

如果第7列为“确定”,则打印第1列:

awk -F, '$7=="OK"{print $1}' file

Perl选项:

perl -F, -lanE 'say $F[0] if /OK$/' inFile

相关问题 更多 >

    热门问题