合并两个域下含用户与多Proxy地址的CSV并去重生成第三个CSV
解决两个CSV文件的Proxy地址合并去重需求
嘿,我来帮你搞定这个CSV合并的问题!根据你的需求,我们需要把两个结构一致的CSV文件合并,保留所有用户,同时将每个用户的Proxy地址去重后整理到对应的列中。下面我用Python来实现这个功能,步骤清晰且容易调整。
实现思路
- 用字典存储每个用户对应的所有非空Proxy地址,利用集合自动去重的特性避免重复项。
- 遍历两个输入CSV文件,收集所有用户的Proxy数据。
- 将整理好的数据写入新的CSV文件,保持原有的列结构(第一列用户,第2-16列Proxy),不足15个Proxy的位置补空。
完整代码示例
import csv from collections import defaultdict # 初始化字典:键为用户名,值为存储Proxy的集合(自动去重) user_proxies = defaultdict(set) # 替换成你实际的两个CSV文件路径 input_csvs = ["csv1.csv", "csv2.csv"] # 读取两个CSV文件,收集Proxy数据 for csv_path in input_csvs: with open(csv_path, mode='r', newline='', encoding='utf-8') as file: csv_reader = csv.reader(file) # 读取表头(如果你的CSV没有表头,直接删除这一行和下面的header变量) header = next(csv_reader) for row in csv_reader: username = row[0].strip() # 遍历第2到16列(对应索引1到15)的Proxy地址 for proxy in row[1:16]: cleaned_proxy = proxy.strip() if cleaned_proxy: # 跳过空单元格 user_proxies[username].add(cleaned_proxy) # 准备输出内容 output_rows = [] # 如果有表头,先加入表头 if 'header' in locals(): output_rows.append(header) # 遍历所有用户,整理去重后的Proxy列表 for username in user_proxies: proxies = list(user_proxies[username]) # 补全到15个元素,保持列数和原CSV一致 proxies += [''] * (15 - len(proxies)) # 组合成一行数据 output_rows.append([username] + proxies[:15]) # 确保最多15个Proxy,对应原列数 # 写入合并后的CSV3 with open("csv3.csv", mode='w', newline='', encoding='utf-8') as file: csv_writer = csv.writer(file) csv_writer.writerows(output_rows)
使用说明
- 文件路径:把
input_csvs里的文件名替换成你实际的CSV1和CSV2路径。 - 表头处理:如果你的CSV文件没有表头,直接删除代码中读取表头的相关行即可。
- 编码调整:如果你的CSV是其他编码(比如gbk),把
encoding='utf-8'改成对应的编码格式。 - 去重逻辑:集合会自动帮我们去除重复的Proxy地址,不用额外写判断。
这样处理后,生成的CSV3就会保留所有用户,每个用户的Proxy地址都是去重后的结果,完美符合你的需求!
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

