Python新手求助:如何用关键词过滤CSV数据并输出
Python 过滤CSV数据实现方案
作为Python新手,你的思路完全靠谱!咱们直接把这个想法变成可运行的代码,一步步来:
第一步:准备关键词列表与依赖库
首先咱们先把你的关键词整理成规范的Python列表(注意你写的"MRE Consul..."我先原样保留啦,如果是输入不全可以之后补全),然后导入Python自带的csv模块——不用额外安装第三方库,对新手超友好:
import csv # 整理后的目标关键词列表 target_keywords = [ "AIG", "Baylor", "CGG", "Citi", "EcconMobil", "Flow-Cal Inc.", "Global SHop Solutions", "Harris Count CTS", "HCSS", "Hitachi Consulting", "HP Inc.", "INT Inc.", "JPMorgan Chase & Co", "Leidos", "McKesson", "MRE Consul..." ]
第二步:编写关键词判断函数
接下来写一个小函数,用来检查某一行数据是否包含目标关键词。这里分两种常用场景:
场景1:检查整行所有字段
只要该行任意一个字段包含关键词,就算符合筛选条件:
def has_target_keyword(row): # 转成小写是为了实现大小写不敏感匹配,不想区分大小写就去掉.lower() for item in row: if any(keyword.lower() in str(item).lower() for keyword in target_keywords): return True return False
场景2:检查指定字段(适合带表头的CSV)
如果你的CSV有明确表头(比如有"公司名称"列),可以只检查特定列,精准度更高:
def has_keyword_in_company(row, company_col_name): # 取出指定列的内容,同样支持大小写不敏感匹配 company_content = str(row[company_col_name]).lower() return any(keyword.lower() in company_content for keyword in target_keywords)
第三步:读取CSV并过滤数据
现在咱们读取CSV文件,逐行筛选符合条件的内容,还可以把结果保存成新的CSV文件:
示例1:无表头的CSV文件
# 替换成你的CSV文件路径,和代码同文件夹直接写文件名即可 with open("your_raw_data.csv", "r", encoding="utf-8") as csv_file: reader = csv.reader(csv_file) # 列表推导式快速过滤符合条件的行 filtered_rows = [row for row in reader if has_target_keyword(row)] # 打印过滤结果 print("筛选出的数据:") for row in filtered_rows: print(row) # 把结果写入新的CSV文件 with open("filtered_result.csv", "w", newline="", encoding="utf-8") as output_file: writer = csv.writer(output_file) writer.writerows(filtered_rows)
示例2:带表头的CSV文件
如果你的CSV有表头(比如第一行是["ID", "公司名称", "地址"]),用DictReader会更直观:
with open("your_raw_data.csv", "r", encoding="utf-8") as csv_file: reader = csv.DictReader(csv_file) # 假设要检查的列名为"公司名称",替换成你实际的列名即可 filtered_rows = [row for row in reader if has_keyword_in_company(row, "公司名称")] # 打印结果 print("筛选出的数据:") for row in filtered_rows: print(row) # 写入新CSV(保留原表头) with open("filtered_result.csv", "w", newline="", encoding="utf-8") as output_file: writer = csv.DictWriter(output_file, fieldnames=reader.fieldnames) writer.writeheader() writer.writerows(filtered_rows)
新手友好小提示
- 如果想要严格区分大小写匹配,去掉代码里所有的
.lower()就行 - 如果你的CSV用的是分号、制表符这类分隔符,在
csv.reader里加参数delimiter=";"(分号示例)即可 - 注意文件路径别写错,要是CSV和代码不在同一个文件夹,记得写完整路径(比如
C:/Users/xxx/Documents/your_data.csv)
内容的提问来源于stack exchange,提问作者PKPython
相关产品推荐
相关产品推荐

