如何使用多个搜索条件和打印行搜索CSV文件?

我有一个大约1000行的.csv文件,看起来像:

id,first_name,last_name,email,gender,ip_address,birthday
1,Ced,Begwell,cbegwell0@google.ca,Male,134.107.135.233,17/10/1978
2,Nataline,Cheatle,ncheatle1@msn.com,Female,189.106.181.194,26/06/1989
3,Laverna,Hamlen,lhamlen2@dot.gov,Female,52.165.62.174,24/04/1990
4,Gawen,Gillfillan,ggillfillan3@hp.com,Male,83.249.190.232,31/10/1984
5,Syd,Gilfether,sgilfether4@china.com.cn,Male,180.153.199.106,11/07/1995

到目前为止,我对代码的要求是输入,然后遍历每一行并打印包含输入的行.看起来像这样:

import csv

# Asks for search criteria from user

search = input("Enter search criteria:\n")

# Opens csv data file

file = csv.reader(open("MOCK_DATA.csv"))

# Go over each row and print it if it contains user input.

for row in file:
    if search in row:
        print(row)

我想要的最终结果,以及我所坚持的,是能够输入更多的一个搜索标准,分别用“,”,它将搜索并打印这些行.有点像过滤列表的方式.

如果文件中有多个“David”是“男性”,则为示例.我可以进入:大卫,男

然后它将打印匹配的所有行,但忽略具有“女性”的“大卫”的行.

最佳答案 您可以在逗号上拆分输入,然后检查以确保输入中的每个字段都使用all()和list comprehensions存在于给定行上.

此示例使用输入的简单拆分,并不关心每个输入匹配哪个字段.如果您只想匹配特定列,请查看使用csv.DictReader而不是csv.reader.

import csv
# Asks for search criteria from user
search_parts = input("Enter search criteria:\n").split(",")
# Opens csv data file
file = csv.reader(open("MOCK_DATA.csv"))
# Go over each row and print it if it contains user input.
for row in file:
    if all([x in row for x in search_parts]):
        print(row)
点赞