过滤后向现有CSV文件添加新行的技术实现需求
看起来你需要处理CSV文件:先过滤源文件的内容,再把符合条件的行追加到现有CSV里。下面用Python给你一个实用的实现方案,你可以根据实际的代码注释规则调整过滤逻辑。
解决方案:过滤CSV并追加新行到现有文件
核心思路
- 读取源CSV文件,用自定义规则筛选符合要求的行
- 以追加模式打开目标CSV文件,将过滤后的行写入
代码实现
import csv # 自定义过滤规则函数(请根据实际需求修改这里的判断条件) def should_keep_row(row): # 示例规则1:只保留TypeIndicator为"10"的记录 if row["TypeIndicator"] != "10": return False # 示例规则2:排除Indicator字段为"u"的记录 if row["Indicator"] == "u": return False # 你可以在这里添加更多规则,比如判断ResultEntry的数值范围等 return True def process_csv(source_path, target_path): # 读取源CSV并过滤行 with open(source_path, mode='r', newline='', encoding='utf-8') as source_file: # 用DictReader可以通过列名访问字段,更易读 csv_reader = csv.DictReader(source_file) # 筛选符合规则的行 filtered_rows = [row for row in csv_reader if should_keep_row(row)] # 追加到目标CSV文件 with open(target_path, mode='a', newline='', encoding='utf-8') as target_file: # 确保写入的列和源文件一致 csv_writer = csv.DictWriter(target_file, fieldnames=csv_reader.fieldnames) # 注意:如果目标CSV文件还没有表头,需要取消下面这行注释来写入表头 # csv_writer.writeheader() # 写入过滤后的所有行 csv_writer.writerows(filtered_rows) if __name__ == "__main__": # 替换成你的源文件和目标文件路径 SOURCE_CSV = "source.csv" TARGET_CSV = "existing.csv" process_csv(SOURCE_CSV, TARGET_CSV)
代码说明
should_keep_row函数:这是你定义过滤规则的核心区域,示例里的规则是保留TypeIndicator为"10"且Indicator不为"u"的行,你可以完全替换成代码注释里的实际规则,比如判断ResultName、ResultEntry的数值范围等。- 文件读取与写入:用Python内置的
csv模块处理,避免手动解析CSV的复杂逻辑,同时保证输出格式符合标准。 - 追加模式:打开目标文件时用
mode='a',这样不会覆盖原有内容,只会在文件末尾添加新行。
针对你的源数据的示例结果
用示例规则过滤后,会得到以下行:
"111","10","S","","125.234"
"111","10","Sn","","0.034"
"111","10","Mo","","0.307"
"111","10","P","","1.593"
"111","10","Zn","","0.126"
这些行会被追加到你的现有CSV文件中。
内容的提问来源于stack exchange,提问作者Esperanza
相关产品推荐
相关产品推荐

