如何按每行指定字符出现次数拆分文件及在两个正则表达式间插入特定分隔符
嘿,这两个需求都完全可以实现!我给你准备了Python的实用实现方案,上手就能用:
第一个需求:按指定字符出现次数拆分文件
这个思路非常直接:逐行读取源文件,统计每行中冒号(你指定的目标字符)的数量,然后把该行追加写入对应数字命名的文件里(比如1个冒号就写进1.txt,3个就写进3.txt)。不管冒号数量有多少,都能自动生成对应的文件。
下面是完整的代码示例:
# 替换成你的源文件实际路径 source_file = "File.txt" with open(source_file, 'r', encoding='utf-8') as f: for line in f: # 去除每行末尾的换行符,避免重复写入空行 line_clean = line.strip() if not line_clean: continue # 跳过空行 # 统计当前行冒号的出现次数 colon_count = line_clean.count(':') # 构造目标文件名 target_file = f"{colon_count}.txt" # 追加写入目标文件,保持原行格式 with open(target_file, 'a', encoding='utf-8') as tf: tf.write(line_clean + '\n')
小提示:这个写法是逐行读取处理,就算源文件很大也不会占用过多内存,效率拉满。
第二个需求:在两个正则匹配内容间插入分隔符
这里我们可以利用正则的分组功能,精准定位到两个匹配的片段,然后用冒号把它们连接起来。你给出的两个正则已经能准确匹配邮箱和IP地址,直接套用就行。
代码示例如下:
import re # 你的输入数据 input_str = "Stack@Stack.Stack192.168.0.1" # 你提供的两个正则表达式 regex_email = r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}' regex_ip = r'[0-9]{1,4}\.[0-9]{1,4}\.[0-9]{1,4}\.[0-9]{1,4}' # 组合成带分组的正则模式,匹配邮箱与IP连续出现的情况 combined_pattern = rf'({regex_email})({regex_ip})' # 替换为「分组1:分组2」的格式 result = re.sub(combined_pattern, r'\1:\2', input_str) print(result) # 输出结果:Stack@Stack.Stack:192.168.0.1
说明:如果你的输入里有多个这样的邮箱+IP组合,这段代码能一次性替换所有符合条件的内容,不用额外循环处理。
内容的提问来源于stack exchange,提问作者user8952195
相关产品推荐
相关产品推荐

