如何输出列中值等于标准输入中指定的值的 CSV 文件行



对于我的硬件,我需要输出其值等于 CSV 文件指定列中的行。即使没有行,也需要按原样输出标头。列号在标准输入的第一行指定,其值在标准输入的第二行指定。输入示例:

2
ACampus
Name,Campus,LabName
Yuzu Mori,ACampus,Laboratory of Omics
Yuki Toi,BCampus,Laboratory of RNA Function
Yo Aa,CCampus,Laboratory of Viral Infectious Diseases 
Yu Ya,ACampus,Laboratory of Functional Genetics
Su Yo,BCampus,Laboratory of Cellular Function

输出示例:

Name,Campus,LabName
Yuzu Mori,ACampus,Laboratory of Omics
Yu Ya,ACampus,Laboratory of Functional Genetics

我试图像那样解决这个问题。

#!usr/bin/env python3
import sys
import csv
data = sys.stdin.readlines()
column_to_be_matched = int(data.pop(0))
word_to_be_matched = data.pop(0)
col_headers = data.pop(0)
print(col_headers)
for row in csv.reader(data):
    if row[column_to_be_matched] == word_to_be_matched: 
       print(row)

程序打印col_headers但不打印具有我需要的值的行。我还能如何访问通过标准输入指定的行中的值?

更改您的"if"条件。 有两个原因 1( python 以零索引开头,所以第 2 列表示行[1] 2( readlines(( 上有换行符 ((,所以你必须删除它们

Old: if row[column_to_be_matched] == word_to_be_matched: 
New: if row[column_to_be_matched-1] == word_to_be_matched.rstrip('n'): 

示例输出:

     Name,Campus,LabName
    ['Yuzu Mori', 'ACampus', 'Laboratory of Omics']
    ['Yu Ya', 'ACampus', 'Laboratory of Functional Genetics']

最新更新