python3 大文献去重的本领

python3 大文献去重的本领

一、天生待去重数据

每行是恒定位数的数字串

import os

from random import randint

#-- from u_东西 import *

print("———— 发端 ————")

#-- 办理()

# 用来摆设的变量

位数 = 13

行数 = 500 * 10000

输入目次 = "./a_输出"

输入文献 = f"{输入目次}/随机数.txt"

# 预处置

_00 = "".join(["0" for i in range(位数 - 1)])

_100 = "1" + _00

最小值 = int(_100)

_1000 = _100 + "0"

最大值 = int(_1000)

if not os.path.exists(输入目次):

os.makedirs(输入目次)

#-- 输入文献 = 文献名防重_追加数字(输入文献)

# 本质处置

with open(输入文献,"a") as f:

for i in range(行数):

f.write(f"{randint(最小值, 最大值)}\n")

百分比 = (i+1) / 行数 * 100

if 百分比 == int(百分比):

print(f"已实行{int(百分比)}%")

#-- 办理()

#-- print(f"\n总耗费时间:{计时(0)}")

print("———— 中断 ————")

二、经过set()按行去重

1. 按原值比拟

(1)读取十足数据

(2)用正则表白式来分行

(3)经过set数据构造往返除反复数据

(4)将set的数据写入文献

import os

import re

#-- from u_东西 import *

print("———— 发端 ————")

#-- 办理()

# 用来摆设的变量

输出目次 = "./a_输出"

输入目次 = "./b_输入"

输入文献 = f"{输入目次}/去重截止.txt"

# 预处置

# 目次不生存顺利动创造

if not os.path.exists(输入目次):

os.makedirs(输入目次)

if not os.path.exists(输出目次):

os.makedirs(输出目次)

#-- 输入文献 = 文献名防重_追加数字(输入文献)

# 获得待去重文献

待去重文献列表 = []

待去重文献列表 = [f"{输出目次}/{i}" for i in os.listdir(输出目次)]

#-- getDeepFilePaths(待去重文献列表,输出目次,"txt")

print(f"\n所有{len(待去重文献列表)}个文献")

# 本质处置

all_lines = []

文献个数 = 0

for 文献 in 待去重文献列表:

文献个数 += 1

print(f"\n处置第{文献个数}个文献")

#-- 办理()

# (1)读十足

with open(文献) as f:

data = f.read()

# (2)正则分行

regx = '''[\w\~`\!\@\#\$\%\^\&\*\(\)\_\-\+\=\[\]\{\}\:\;\,\.\/\<\>\?]+'''

lines = re.findall(regx, data)

all_lines.extend(lines)

#-- 办理()

#-- print(f"读取结束,耗费时间:{计时()}")

# (3)汇合去重

all_lines_set = set(all_lines)

#-- 办理()

#-- print(f"\n\n去重结束,耗费时间:{计时()}")

# (4)轮回写入

with open(输入文献,"a") as f_rst:

for line in all_lines_set:

f_rst.write(line + '\n')

#-- 办理()

#-- print(f"\n写入结束,耗费时间:{计时()}")

#-- 办理()

#-- print(f"\n\n总耗费时间:{计时(0)}")

print("———— 中断 ————")

分享到 :
相关推荐

Leave a Reply

Your email address will not be published. Required fields are marked *