python 对文件中重复的特定字符串进行替换,仅保留第4n处,输出指定文件中(本文的解决方案,即python代码,通过 文心一言的文心大模型直接生成)

原需求:将 具有801 行的每行一个单元格的表格结构(每个单元格内容较少),调整为每行4个单元格,进而缩减为201行,将信息集中一些。

原样式为:

调整后,效果为:

处理前部分数据:

<tr><td>am-icon-bluetooth</td><td ><i class="am-icon-bluetooth"></i></td></tr>
<tr><td>am-icon-bluetooth-b</td><td ><i class="am-icon-bluetooth-b"></i></td></tr>
<tr><td>am-icon-codiepie</td><td ><i class="am-icon-codiepie"></i></td></tr>
<tr><td>am-icon-credit-card-alt</td><td ><i class="am-icon-credit-card-alt"></i></td></tr>

处理后部分数据:

<tr>
	<td>am-icon-bluetooth</td><td ><i class="am-icon-bluetooth"></i></td>
	<td>am-icon-bluetooth-b</td><td ><i class="am-icon-bluetooth-b"></i></td>
	<td>am-icon-codiepie</td><td ><i class="am-icon-codiepie"></i></td>
	<td>am-icon-credit-card-alt</td><td ><i class="am-icon-credit-card-alt"></i></td>
</tr>

唯一需要适当调整的是:(当前为从第一个不保留,若想保留第一个,就将 i + 1,换成i,即 if i % 4 == 0 )

        # 判断是否是每第4次出现
        if (i + 1) % 4 == 0:

原代码:


import re


def replace_every_4th_occurrence(input_file, output_file, target_string, replacement_string):
    # 读取文件内容
    with open(input_file, 'r', encoding='utf-8') as file:
        content = file.read()

    # 使用正则表达式查找所有目标字符串的位置
    matches = list(re.finditer(re.escape(target_string), content))

    # 创建一个新的字符串列表用于构建修改后的内容
    new_content_parts = []
    last_index = 0

    for i, match in enumerate(matches):
        # 获取当前匹配的开始和结束索引
        start, end = match.start(), match.end()

        # 提取当前匹配之前的部分
        new_content_parts.append(content[last_index:start])

        # 判断是否是每第4次出现
        if (i + 1) % 4 == 0:
            # 保留该匹配项
            new_content_parts.append(replacement_string)
        else:
            # 替换为其他内容(例如空字符串或其他占位符)
            new_content_parts.append('')

        # 更新最后一个索引
        last_index = end

    # 添加文件末尾剩余的部分
    new_content_parts.append(content[last_index:])

    # 合并所有部分形成新的内容
    new_content = ''.join(new_content_parts)

    # 将修改后的内容写入到输出文件
    with open(output_file, 'w', encoding='utf-8') as file:
        file.write(new_content)


# 示例使用
input_file = 'input.txt'
output_file = 'output.txt'
target_string = 'your_target_string'
replacement_string = 'your_replacement_string'

replace_every_4th_occurrence(input_file, output_file, target_string, replacement_string)

微调后,完整的为:


import re


def replace_every_4th_occurrence(input_file, output_file, target_string, replacement_string, start_index):
    # 读取文件内容
    with open(input_file, 'r', encoding='utf-8') as file:
        content = file.read()

    # 使用正则表达式查找所有目标字符串的位置
    matches = list(re.finditer(re.escape(target_string), content))

    # 创建一个新的字符串列表用于构建修改后的内容
    new_content_parts = []
    last_index = 0

    for i, match in enumerate(matches):
        # 获取当前匹配的开始和结束索引
        start, end = match.start(), match.end()

        # 提取当前匹配之前的部分
        new_content_parts.append(content[last_index:start])

        # 判断是否是每第4次出现
        if (i + start_index) % 4 == 0:
            # 保留该匹配项
            new_content_parts.append(replacement_string)
        else:
            # 替换为其他内容(例如空字符串或其他占位符)
            new_content_parts.append('')

        # 更新最后一个索引
        last_index = end

    # 添加文件末尾剩余的部分
    new_content_parts.append(content[last_index:])

    # 合并所有部分形成新的内容
    new_content = ''.join(new_content_parts)

    # 将修改后的内容写入到输出文件
    with open(output_file, 'w', encoding='utf-8') as file:
        file.write(new_content)


# 示例使用
input_file = 'input.txt'
output_file = 'mid.txt'
target_string = '</tr>'
replacement_string = '</tr>'
# 第一步,替换掉 </tr>
replace_every_4th_occurrence(input_file, output_file, target_string, replacement_string, 1)

input_file = 'mid.txt'
output_file = 'output.txt'
target_string = '<tr>'
replacement_string = '<tr>'

# 再对,上面所得结果,进一步替换掉 <tr>
replace_every_4th_occurrence(input_file, output_file, target_string, replacement_string, 0)

感悟:试用了 “库克AI”、“豆包”、“文心一言”,发现 “文心一言”效果最好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值