我需要从标准输入中读取csv文件,并只输出值等于列中指定值的行。我的输入如下:
2
Kashiwa
Name,Campus,LabName
Shinichi MORISHITA,Kashiwa,Laboratory of Omics
Kenta Naai,Shirogane,Laboratory of Functional Analysis in Silico
Kiyoshi ASAI,Kashiwa,Laboratory of Genome Informatics
Yukihide Tomari,Yayoi,Laboratory of RNA Function
我的输出应该是这样的:
Name,Campus,LabName
Shinichi MORISHITA,Kashiwa,Laboratory of Omics
Kiyoshi ASAI,Kashiwa,Laboratory of Genome Informatics
我需要找出column#2中的值==柏和的人,并且不在stdout中输出stdin的前2行。
到目前为止,我只是尝试从stdin读取到csv,但我得到的每一行都是字符串列表(正如csv文档中所期望的)。我可以改变这一点吗?
#!usr/bin/env python3
import sys
import csv
data = sys.stdin.readlines()
for line in csv.reader(data):
print(line)
输出:
['2']
['Kashiwa']
['Name', 'Campus', 'LabName']
['Shinichi MORISHITA', 'Kashiwa', 'Laboratory of Omics']
['Kenta Naai', 'Shirogane', 'Laboratory of Functional Analysis in
Silico']
['Kiyoshi ASAI', 'Kashiwa', 'Laboratory of Genome Informatics']
['Yukihide Tomari', 'Yayoi', 'Laboratory of RNA Function']
有人能给予我一些关于将stdin读入CSV并稍后操作数据(只输出所需的列值、交换列等)的建议吗?
4条答案
按热度按时间67up9zun1#
wfveoks02#
使用Pandas读取和管理DataFrame中的数据
您可以执行所有类型的编辑,例如,只需按以下方式对DataFrame进行排序:
检查Pandas documentation的所有可能性。
gr8qqesn3#
这是一种方法。
c8ib6hqw4#