如何用Pandas在列表中查找字符串并导出布尔标记列?
标准实现方法:基于黑名单标记CSV中的文件路径
嘿,刚接触Python就能写出输出布尔值的代码已经超棒啦!针对你这个给CSV文件路径添加黑名单标记的需求,我分享两个实际项目里常用的标准实现思路,你可以根据自己的场景选~
方法一:用Pandas实现(推荐,简洁高效)
处理CSV文件最常用的就是Pandas库,代码简洁易读,适合快速实现需求。
步骤说明:
- 先安装Pandas(如果还没装的话):
pip install pandas - 读取CSV文件
- 定义你的黑名单词汇列表
- 写一个辅助函数,检查单个路径是否包含黑名单里的任意词汇
- 用
apply方法给DataFrame添加新的标记列 - 最后保存处理后的CSV
代码示例:
import pandas as pd # 1. 定义黑名单词汇 blacklist = ["cow", "dog", "secret"] # 2. 读取CSV文件(假设你的CSV里有一列叫'file_path') df = pd.read_csv("your_files.csv") # 3. 定义检查函数,支持大小写忽略(可选,根据需求调整) def contains_blacklist(path): # 转成小写避免大小写问题,比如"Cow"也能被匹配到 lower_path = path.lower() return any(word.lower() in lower_path for word in blacklist) # 4. 添加标记列,这里用布尔值True/False,也可以改成1/0 df["is_blacklisted"] = df["file_path"].apply(contains_blacklist) # 5. 保存处理后的CSV df.to_csv("marked_files.csv", index=False)
方法二:基础Python实现(无需第三方库,适合理解底层)
如果不想用Pandas,用Python内置的csv模块也能实现,适合新手搞懂每一步的逻辑。
代码示例:
import csv blacklist = ["cow", "dog", "secret"] # 读取原CSV并处理 with open("your_files.csv", "r", newline="", encoding="utf-8") as infile, \ open("marked_files.csv", "w", newline="", encoding="utf-8") as outfile: reader = csv.DictReader(infile) # 给表头添加新的标记列 fieldnames = reader.fieldnames + ["is_blacklisted"] writer = csv.DictWriter(outfile, fieldnames=fieldnames) writer.writeheader() for row in reader: file_path = row["file_path"] # 检查是否包含黑名单词汇,同样可选大小写忽略 is_blacklisted = any(word.lower() in file_path.lower() for word in blacklist) # 把布尔值转成1/0的话,改成int(is_blacklisted)就行 row["is_blacklisted"] = is_blacklisted writer.writerow(row)
额外小贴士:
- 如果需要精确匹配(比如不想把"cows"当成包含"cow"),可以把路径用
os.path.split()拆分后,检查拆分出的文件夹/文件名是否完全匹配黑名单词汇。 - 黑名单词汇如果有特殊字符(比如
.、*),要是后续用正则匹配的话,记得用re.escape()处理,避免匹配异常。
内容的提问来源于stack exchange,提问作者khabaz
相关产品推荐
相关产品推荐

