本文目录导读:

文件重复删除(Python)
import os
import hashlib
from collections import defaultdict
def find_duplicate_files(directory):
"""查找并删除重复文件"""
file_hash_map = defaultdict(list)
# 遍历文件并计算哈希值
for root, dirs, files in os.walk(directory):
for filename in files:
filepath = os.path.join(root, filename)
# 计算文件哈希
with open(filepath, 'rb') as f:
file_hash = hashlib.md5(f.read()).hexdigest()
file_hash_map[file_hash].append(filepath)
# 找到并删除重复文件
duplicates = []
for hash_value, file_list in file_hash_map.items():
if len(file_list) > 1:
# 保留第一个文件,删除其余重复
for filepath in file_list[1:]:
duplicates.append(filepath)
os.remove(filepath)
print(f"已删除重复文件: {filepath}")
return duplicates
# 使用示例
duplicates = find_duplicate_files("/path/to/your/directory")
print(f"共删除 {len(duplicates)} 个重复文件")
文本行去重(命令行)
#!/bin/bash
# 文本行去重脚本
input_file="$1"
output_file="$2"
if [ -z "$input_file" ] || [ -z "$output_file" ]; then
echo "用法: $0 输入文件 输出文件"
exit 1
fi
# 方法1: 使用 sort 和 uniq
sort "$input_file" | uniq > "$output_file"
# 方法2: 保留原始顺序
awk '!seen[$0]++' "$input_file" > "$output_file"
echo "去重完成!"
数据库重复记录删除(SQL)
-- 删除完全重复的行
DELETE FROM table_name
WHERE id NOT IN (
SELECT MIN(id)
FROM table_name
GROUP BY column1, column2, column3
);
-- 或使用临时表
CREATE TABLE temp_table AS
SELECT DISTINCT * FROM original_table;
DROP TABLE original_table;
ALTER TABLE temp_table RENAME TO original_table;
Excel/CSV 数据去重(Python)
import pandas as pd
def remove_duplicate_rows(csv_file, output_file, subset_columns=None):
"""
删除CSV文件中的重复行
Args:
csv_file: 输入文件路径
output_file: 输出文件路径
subset_columns: 用于判断重复的列名列表,None表示所有列
"""
# 读取CSV文件
df = pd.read_csv(csv_file)
# 检查重复行
duplicates = df.duplicated(subset=subset_columns)
# 打印重复信息
if duplicates.any():
duplicate_count = duplicates.sum()
print(f"发现 {duplicate_count} 个重复行")
# 保留第一个出现的,删除其余重复
df_cleaned = df.drop_duplicates(subset=subset_columns, keep='first')
# 保存结果
df_cleaned.to_csv(output_file, index=False)
print(f"已保存去重后的文件: {output_file}")
else:
print("未发现重复数据")
# 使用示例
remove_duplicate_rows("input.csv", "output.csv")
remove_duplicate_rows("input.csv", "output.csv", subset_columns=['name', 'email'])
图片重复检测(Python)
from PIL import Image
import imagehash
import os
from collections import defaultdict
def find_similar_images(directory, threshold=5):
"""查找相似图片(基于感知哈希)"""
hash_map = defaultdict(list)
for root, dirs, files in os.walk(directory):
for filename in files:
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
filepath = os.path.join(root, filename)
try:
# 计算感知哈希
with Image.open(filepath) as img:
phash = imagehash.phash(img)
hash_map[phash].append(filepath)
except Exception as e:
print(f"无法处理文件 {filepath}: {e}")
# 查找重复图片
duplicates = []
for hash_value, file_list in hash_map.items():
if len(file_list) > 1:
duplicates.extend(file_list[1:])
print(f"重复图片组: {file_list}")
return duplicates
# 使用示例
duplicate_images = find_similar_images("/path/to/images")
通用去重函数(Python)
def deduplicate_list(items, key_func=None):
"""
列表去重,保持原始顺序
Args:
items: 输入列表
key_func: 自定义比较键函数(可选)
Returns:
去重后的列表
"""
seen = set()
result = []
for item in items:
# 使用自定义键或直接比较
key = key_func(item) if key_func else item
if key not in seen:
seen.add(key)
result.append(item)
return result
# 使用示例
# 基本去重
numbers = [1, 2, 2, 3, 3, 4, 5, 5]
unique_numbers = deduplicate_list(numbers)
print(unique_numbers) # [1, 2, 3, 4, 5]
# 自定义键去重(基于字典的某个字段)
data = [
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"},
{"id": 1, "name": "Alice"},
{"id": 3, "name": "Charlie"}
]
unique_data = deduplicate_list(data, key_func=lambda x: x['id'])
print(unique_data)
使用建议
- 备份数据:运行去重脚本前,务必备份原始数据
- 测试先行:先用小数据集测试脚本效果
- 选择合适方法:
- 文件去重:使用MD5或SHA256哈希
- 文本去重:使用awk或sort+uniq
- 结构化数据:使用数据库或pandas
- 性能考虑:大文件或大数据集时注意内存使用
- 确认逻辑:确认去重标准(完全匹配、部分匹配、模糊匹配)
选择哪种方法取决于你的具体需求和数据量大小,如有特定场景,可以提供更多细节以获得更针对性的解决方案。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播