Python:查找并替换 html 标签,有例外吗?

问题描述 投票:0回答:1
python python-3.x html
1个回答
0
投票

已解决:

import os
import regex as re

def process_file_content(content):
    lines = content.split('\n')
    processed_lines = []

    for line in lines:
        # Păstrăm spațiile inițiale ale fiecărei linii
        leading_spaces = re.match(r'^\s*', line).group()

        stripped_line = line.strip()

        # Păstrăm liniile cu <br><br> neschimbate
        if '<br><br>' in stripped_line:
            processed_lines.append(line)
            continue

        # Procesăm doar liniile care conțin taguri <p>
        if '<p class="text_obisnuit"' in stripped_line or '<p class="text_obisnuit2"' in stripped_line:
            # Înlocuim <br> la sfârșitul liniei cu </p>
            stripped_line = re.sub(r'(<p class="text_obisnuit2?">.*?)<br>\s*$', r'\1</p>', stripped_line)

            # Eliminăm spațiile inutile de la început
            stripped_line = re.sub(r'^\s*(<p class="text_obisnuit2?">)', r'\1', stripped_line)

            # Eliminăm </p> dublu
            stripped_line = re.sub(r'(<p class="text_obisnuit2?">.*?</p>)\s*</p>\s*', r'\1', stripped_line)

        # Adăugăm spațiile inițiale înapoi
        processed_lines.append(leading_spaces + stripped_line)

    content = '\n'.join(processed_lines)

    # Adăugăm spații între paragrafe
    # content = re.sub(r'(</p>)\s*(<p class="text_obisnuit">)', r'\1\n\n\2', content)
    # content = re.sub(r'(</p>)\s*(<p class="text_obisnuit2">)', r'\1\n\n\2', content)

    # Eliminăm liniile care conțin doar </p>
    content = re.sub(r'^\s*</p>\s*$', '', content, flags=re.MULTILINE)

    return content

def process_html_files(directory):
    excluded_files = [
        'aforisme-si-pareri-bine-slefuite-III.html',
        'aforisme-si-pareri-bine-slefuite-II.html',
        'aforisme-si-pareri-bine-slefuite.html',
        'cartea-cartilor.html',
        'cartea-creatiei.html',
        'cartea-de-nisip.html',
        'ganduri-din-colturile-memoriei-III.html',
        'imagini-din-muzeul-mitropolitan-iasi.html',
        'ganduri-din-colturile-memoriei-II.html',
        'ganduri-din-colturile-memoriei.html'
    ]

    for filename in os.listdir(directory):
        if filename.endswith('.html') and filename not in excluded_files:
            file_path = os.path.join(directory, filename)
            with open(file_path, 'r', encoding='utf-8') as file:
                content = file.read()

            processed_content = process_file_content(content)

            if content != processed_content:
                print(f"\nModificări în fișierul: {filename}")
                with open(file_path, 'w', encoding='utf-8') as file:
                    file.write(processed_content)

            # Verificăm dacă mai există linii cu <br><br> după procesare
            if '<br><br>' in processed_content:
                print(f"\nLinia <br><br> păstrată în fișierul: {filename}")

# Specificați directorul cu fișierele HTML
directory = r'd:\55'
process_html_files(directory)
© www.soinside.com 2019 - 2024. All rights reserved.