• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Python: flags = re.DOTALL поиск и замена регулярных выражений не работает для анализа данных

Suzana Me

Member
03.06.2021
8
0
BIT
0
Я хочу сделать простой синтаксический анализ из 2-х тегов html:

Код:
<title>Love Stars</title>

<meta name="Subject" content="MERCY"/>


должен стать:

Код:
<title>Love Stars</title>

<meta name="Subject" content="Love Stars"/>


Мой код почти хороший, ошибок нет, но парсинг не производится. Я считаю, что что-то не так с разделом flags = re.DOTALL. Может кто-нибудь мне помочь?

Код:
import requests
import re

english_folder1 = r"c:\test"

extension_file = ".html"

use_parse_folder = True

import os

en1_directory = os.fsencode(english_folder1)

print('Going through english folder')
for file in os.listdir(en1_directory):
    filename = os.fsdecode(file)
    print(filename)
    if filename == 'y_key_e479323ce281e459.html' or filename == 'TS_4fg4_tr78.html': #ignore this files
        continue
    if filename.endswith(extension_file):
        with open(os.path.join(english_folder1, filename), encoding='utf-8') as html:
            html = html.read()

            try:
                with open(os.path.join(english_folder1, filename), encoding='utf-8') as en_html:
                    en_html = en_html.read()

                try:
                    parse_1 = re.search('<title>.+</title>', html, re.DOTALL)[0]
                    en_html = re.sub('<meta name="Subject" content=".+"', parse_1, html, re.DOTALL)

                except:
                        pass

            except FileNotFoundError:
                continue

        print(f'{filename} parsed')
        if use_parse_folder:
            try:
                with open(os.path.join(english_folder1+r'\parsed', 'parsed_'+filename), 'w', encoding='utf-8') as new_html:
                    new_html.write(en_html)
            except:
                os.mkdir(english_folder1+r'\parsed')
                with open(os.path.join(english_folder1+r'\parsed', 'parsed_'+filename), 'w', encoding='utf-8') as new_html:
                    new_html.write(en_html)
        else:
            with open(os.path.join(english_folder1, 'parsed_'+filename), 'w', encoding='utf-8') as html:
                html.write(en_html)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!