Общие

Очистка текста от HTML WORD тегов

Очистка текста от HTML WORD тегов

Очистить CSV от HTML-тегов можно несколькими способами, в зависимости от ваших инструментов и размера файла.

Вот основные подходы:

  • Использование Python (рекомендуется для гибкости и больших файлов): Это самый надежный и гибкий способ.
import csv
import re # Для регулярных выражений
# Если нужно декодировать HTML-сущности типа  , & и т.д.
# import html # Раскомментируйте, если нужно

def clean_html(raw_html):
# Удаляем HTML теги
cleanr = re.compile('<.*?>')
cleantext = re.sub(cleanr, '', raw_html)
# Опционально: декодируем HTML-сущности
# cleantext = html.unescape(cleantext)
return cleantext.strip() # .strip() удаляет лишние пробелы по краям

input_csv_file = 'input.csv'
output_csv_file = 'output_cleaned.csv'
# Укажите правильную кодировку вашего файла, если это не utf-8
encoding = 'utf-8'
# Укажите ваш разделитель, если это не запятая
delimiter = ','

try:
with open(input_csv_file, mode='r', newline='', encoding=encoding) as infile, \
open(output_csv_file, mode='w', newline='', encoding=encoding) as outfile:

reader = csv.reader(infile, delimiter=delimiter)
writer = csv.writer(outfile, delimiter=delimiter)

for row in reader:
cleaned_row = [clean_html(cell) for cell in row]
writer.writerow(cleaned_row)
print(f"Файл '{output_csv_file}' успешно создан.")

except FileNotFoundError:
print(f"Ошибка: Файл '{input_csv_file}' не найден.")
except Exception as e:
print(f"Произошла ошибка: {e}")

Как использовать:

  • Сохраните код как clean_csv.py.

  • Поместите ваш input.csv в ту же папку.

  • Запустите из командной строки: python clean_csv.py

  • Результат будет в output_cleaned.csv.

  • Если у вас другой разделитель (например, ;), измените delimiter = ','.

  • Если нужна раскодировка HTML-сущностей ( -> пробел, &lt; -> <), раскомментируйте строки с import html и cleantext = html.unescape(cleantext).

  • Использование PHP (если вы работаете в PHP-окружении):

<?php

$inputFile = 'input.csv';
$outputFile = 'output_cleaned.csv';
$delimiter = ','; // Ваш разделитель
$enclosure = '"'; // Символ обрамления полей
$escape = '\\';   // Экранирующий символ

if (($handleInput = fopen($inputFile, 'r')) !== false) {
if (($handleOutput = fopen($outputFile, 'w')) !== false) {
while (($row = fgetcsv($handleInput, 0, $delimiter, $enclosure, $escape)) !== false) {
$cleanedRow = [];
foreach ($row as $cell) {
// Удаляем HTML теги
$cleanedCell = strip_tags($cell);
// Опционально: декодируем HTML сущности
// $cleanedCell = html_entity_decode($cleanedCell, ENT_QUOTES | ENT_HTML5, 'UTF-8');
$cleanedRow[] = trim($cleanedCell);
}
fputcsv($handleOutput, $cleanedRow, $delimiter, $enclosure, $escape);
}
fclose($handleOutput);
echo "Файл '$outputFile' успешно создан.\n";
} else {
echo "Не удалось открыть файл для записи: $outputFile\n";
}
fclose($handleInput);
} else {
echo "Не удалось открыть файл для чтения: $inputFile\n";
}

?>

Как использовать:

  • Сохраните код как clean_csv.php.

  • Поместите input.csv в ту же папку.

  • Запустите из командной строки: php clean_csv.php

  • Результат будет в output_cleaned.csv.

  • Функция strip_tags() отлично справляется с удалением тегов.

  • Если нужна раскодировка HTML-сущностей, раскомментируйте строку с html_entity_decode().

  • Использование онлайн-инструментов (для небольших файлов, если нет возможности программировать): Существует множество онлайн-инструментов “HTML stripper” или “HTML cleaner”.

  • Вы можете скопировать содержимое ячеек (или всего файла, если он небольшой) в такой инструмент.

  • Пример: https://www.striphtml.com/ (будьте осторожны с конфиденциальными данными).

  • Этот способ менее удобен для больших CSV.

  • Использование текстового редактора с поддержкой регулярных выражений (Notepad++, Sublime Text, VS Code и т.д.):

  • Откройте CSV файл.

  • Используйте функцию “Найти и заменить” (обычно Ctrl+H или Cmd+H).

  • Включите режим регулярных выражений (regex).

  • Найти: <[^>]+> (это выражение найдет большинство HTML-тегов).

  • Заменить на: (оставьте это поле пустым).

  • Нажмите “Заменить все”.

  • Внимание: Этот метод может быть опасен, если у вас есть данные, которые выглядят как теги, но не являются ими (например, <10 в тексте). Также он не справится с некорректным HTML. Обязательно сделайте резервную копию файла перед этим!

  • Использование командной строки (Linux/macOS - sed или awk): Это для более продвинутых пользователей.

С помощью sed:

sed 's/<[^>]*>//g' input.csv > output_cleaned.csv

Это применит замену ко всей строке. Если HTML только в определенных полях, и у вас сложная структура CSV (например, запятые внутри кавычек), sed может быть не лучшим выбором.

С помощью awk (более аккуратно для CSV, если указать разделитель):

awk 'BEGIN{FS=OFS=","} {for(i=1;i<=NF;i++) gsub(/<[^>]+>/,"",$i)}1' input.csv > output_cleaned.csv

Замените , на ваш разделитель, если он другой.

Рекомендации:

  • Всегда делайте резервную копию вашего оригинального CSV файла перед любыми манипуляциями.

  • Для больших и сложных CSV файлов методы с Python или PHP являются наиболее надежными и гибкими, так как они корректно обрабатывают структуру CSV (разделители, кавычки) и позволяют более тонко настроить процесс очистки.

  • Регулярное выражение <[^>]+> удалит большинство стандартных тегов. Оно означает “найти символ <, за которым следует один или более любых символов, кроме >, и затем символ >”.

для очистки текста от таких специфичных тегов и (и их закрывающих пар) можно использовать регулярные выражения. Главное — сохранить текст, который находится внутри этих тегов.

Вот несколько способов:

1. Python

Это хороший выбор, если у вас много текста или это часть большего скрипта.

python Скопировать

Закрыть блок

import re

def clean_font_span_tags(text):
"""
Удаляет теги ... и ..., сохраняя их содержимое.
Обрабатывает и варианты с двойными кавычками типа size=""2"".
"""
# Удаляем открывающие и закрывающие теги  и
# [^>]* будет соответствовать любым атрибутам внутри тега
text = re.sub(r'</?font[^>]*>', '', text, flags=re.IGNORECASE)

# Удаляем открывающие и закрывающие теги  и
text = re.sub(r'</?span[^>]*>', '', text, flags=re.IGNORECASE)

return text

# Ваш пример текста
html_text = 'Это текст с некоторыми тегами и другими тегами, который нужно очистить.'
html_text_variation1 = 'А это КРАСНЫЙ текст.'
html_text_variation2 = 'Просто текст со спаном.'

cleaned_text = clean_font_span_tags(html_text)
print(f"Оригинал: {html_text}")
print(f"Очищенный: {cleaned_text}")

cleaned_text_v1 = clean_font_span_tags(html_text_variation1)
print(f"Оригинал: {html_text_variation1}")
print(f"Очищенный: {cleaned_text_v1}")

cleaned_text_v2 = clean_font_span_tags(html_text_variation2)
print(f"Оригинал: {html_text_variation2}")
print(f"Очищенный: {cleaned_text_v2}")

# Более элегантный вариант с одним выражением
def clean_specific_tags_combined(text):
# </? означает необязательный / (для открывающего или закрывающего тега)
# (font|span) означает "font" ИЛИ "span"
# [^>]* соответствует любым атрибутам
# flags=re.IGNORECASE делает поиск нечувствительным к регистру (FONT, Font, font)
cleaned_text = re.sub(r'</?(font|span)[^>]*>', '', text, flags=re.IGNORECASE)
return cleaned_text

print("\n--- Комбинированный вариант ---")
cleaned_combined = clean_specific_tags_combined(html_text)
print(f"Оригинал: {html_text}")
print(f"Очищенный: {cleaned_combined}")

cleaned_combined_v1 = clean_specific_tags_combined(html_text_variation1)
print(f"Оригинал: {html_text_variation1}")
print(f"Очищенный: {cleaned_combined_v1}")

Пояснение регулярного выражения </?(font|span)[^>]>:*

  • </?: Соответствует < или </ (открывающий или закрывающий тег).

  • (font|span): Группа, которая соответствует либо слову “font”, либо слову “span”.

  • [^>]*: Соответствует любым символам, кроме >, ноль или более раз. Это захватывает все атрибуты внутри тега (например, size=""2"" face=""Arial" или style="...").

  • >: Соответствует закрывающей угловой скобке тега.

  • re.IGNORECASE: Флаг, делающий поиск нечувствительным к регистру (т.е. , , “ будут найдены).

2. JavaScript (для браузера или Node.js)

javascript Скопировать

Закрыть блок

function cleanFontSpanTags(text) {
// g - глобальный поиск (все вхождения)
// i - нечувствительный к регистру
let cleanedText = text.replace(/<\/?font[^>]*>/gi, '');
cleanedText = cleanedText.replace(/<\/?span[^>]*>/gi, '');
return cleanedText;
}

// Комбинированный вариант
function cleanSpecificTagsCombined(text) {
const regex = /<\/?(font|span)[^>]*>/gi;
return text.replace(regex, '');
}

let htmlText = 'Это текст с некоторыми тегами и другими тегами, который нужно очистить.';
let htmlTextVariation1 = 'А это КРАСНЫЙ текст.';

console.log("Оригинал:", htmlText);
console.log("Очищенный (отдельно):", cleanFontSpanTags(htmlText));
console.log("Очищенный (комбинированно):", cleanSpecificTagsCombined(htmlText));

console.log("Оригинал:", htmlTextVariation1);
console.log("Очищенный (комбинированно):", cleanSpecificTagsCombined(htmlTextVariation1));

3. PHP

php Скопировать

Закрыть блок

<?php

function cleanFontSpanTags($text) {
// i в конце регулярного выражения для нечувствительности к регистру
$text = preg_replace('/<\/?font[^>]*>/i', '', $text);
$text = preg_replace('/<\/?span[^>]*>/i', '', $text);
return $text;
}

// Комбинированный вариант
function cleanSpecificTagsCombined($text) {
return preg_replace('/<\/?(font|span)[^>]*>/i', '', $text);
}

$htmlText = 'Это текст с некоторыми тегами и другими тегами, который нужно очистить.';
$htmlTextVariation1 = 'А это КРАСНЫЙ текст.';

echo "Оригинал: " . $htmlText . "\n";
echo "Очищенный (отдельно): " . cleanFontSpanTags($htmlText) . "\n";
echo "Очищенный (комбинированно): " . cleanSpecificTagsCombined($htmlText) . "\n\n";

echo "Оригинал: " . $htmlTextVariation1 . "\n";
echo "Очищенный (комбинированно): " . cleanSpecificTagsCombined($htmlTextVariation1) . "\n";

?>

4. В текстовом редакторе (например, VS Code, Sublime Text, Notepad++)

Большинство современных текстовых редакторов поддерживают поиск и замену с использованием регулярных выражений:

  • Откройте диалог “Найти и Заменить” (обычно Ctrl+H или Cmd+H).

  • Включите режим регулярных выражений (часто иконка .* или флажок “Regex”).

  • Найти: </?(font|span)[^>]*>

  • Заменить на: (оставьте это поле пустым)

  • Убедитесь, что включен режим нечувствительности к регистру (если есть такая опция, иначе используйте </?(font|FONT|span|SPAN)[^>]*> или аналогичный вариант, если редактор не поддерживает флаги в выражении).

  • Нажмите “Заменить все”.

Важно: Регулярные выражения мощны, но могут быть сложны для очень вложенного или невалидного HTML. Для простых случаев, как ваш, они подходят отлично. Если HTML очень сложный и нужно гарантировать 100% корректность разбора, лучше использовать полноценный HTML-парсер (например, BeautifulSoup в Python, DOMParser в JavaScript), а затем удалять нужные узлы. Но для вашей задачи это, скорее всего, избыточно.

Комбинированные варианты (</?(font|span)[^>]*>) более элегантны и эффективны, так как проходят по тексту один раз для обоих тегов.

Выберите способ, который вам наиболее удобен и соответствует вашим техническим возможностям. Если файл большой или требует аккуратной обработки, я бы рекомендовал Python.

  1. Форматирование отступов и выравнивание

Цель: Привести код к единому стилю отступов, чтобы он был читаемым и аккуратным.

  • Единообразие: Табы или Пробелы?

  • Определитесь со стилем: Решите, будете ли вы использовать табы или пробелы для отступов (и сколько пробелов, если выбрали их, обычно 2 или 4).

  • Настройка Notepad++:

  • Опции -> Настройки... -> Языки меню (или Опции -> Настройки... -> Правка -> Табуляция).

  • Здесь вы можете установить “Размер табуляции” и выбрать “Заменять пробелом” (если хотите использовать пробелы вместо табов). Убедитесь, что это настроено для типа файла, с которым вы работаете (например, [По умолчанию] или конкретный язык).

  • Преобразование существующих отступов:

  • Выделите весь код (Ctrl+A).

  • Правка -> Операции с пробелами -> Табуляция в пробелы (если вы решили использовать пробелы).

  • Правка -> Операции с пробелами -> Пробелы в табуляцию (все) (если вы решили использовать табы).

  • Правка -> Операции с пробелами -> Пробелы в табуляцию (ведущие) (преобразует только начальные пробелы в строки в табы).

  • Автоматический отступ (частично):

  • Notepad++ предлагает базовый автоматический отступ при нажатии Enter после строки, заканчивающейся, например, { в C-подобных языках.

  • Для более сложного форматирования (например, HTML/XML):

  • Плагин XML Tools: Если еще не установлен, установите через Плагины -> Plugins Admin..., найдите XML Tools и установите.

  • После установки выделите ваш HTML/XML код и выберите Плагины -> XML Tools -> Pretty print (libXML) или Pretty print (Indent text). Это отформатирует структуру документа.

  • Ручное выравнивание:

  • Выделите строки, которые нужно сдвинуть.

  • Tab – сдвинуть вправо (увеличить отступ).

  • Shift+Tab – сдвинуть влево (уменьшить отступ).

  1. Удаление лишних пробелов или пустых строк

Цель: Убрать визуальный мусор, который не несет смысловой нагрузки.

  • Удаление замыкающих пробелов (в конце строк):

  • Правка -> Операции с пробелами -> Убрать замыкающие пробелы. Очень полезная функция, так как эти пробелы часто невидимы, но могут мешать.

  • Удаление начальных пробелов:

  • Правка -> Операции с пробелами -> Убрать начальные пробелы. Будьте осторожны, если отступы несут смысловую нагрузку (как в Python).

  • Удаление начальных и замыкающих пробелов:

  • Правка -> Операции с пробелами -> Убрать начальные и замыкающие пробелы.

  • Удаление пустых строк:

  • Правка -> Операции со строками -> Удалить пустые строки (удаляет строки, где нет вообще никаких символов).

  • Правка -> Операции со строками -> Удалить пустые строки (содержащие пробельные символы) (удаляет и строки, где есть только пробелы или табы).

  • Удаление множественных пробелов подряд, оставляя один:

  • Используйте Поиск и Замену (Ctrl+H).

  • Найти что: \s{2,} (или просто “– два пробела, если речь только о пробелах, а не всех пробельных символах)

  • Заменить на: “(один пробел)

  • Режим поиска: “Регулярные выражения” (если используете \s{2,}) или “Обычный” (если два пробела).

  • Нажмите “Заменить все”.

  • Замена нескольких пустых строк на одну:

  • Используйте Поиск и Замену (Ctrl+H).

  • Найти что: (\r\n){2,} (для Windows-формата строк) или (\n){2,} (для Unix-формата). \R{2,} может сработать как универсальный вариант для любых переводов строк.

  • Заменить на: \r\n (или \n соответственно, или \R)

  • Режим поиска: “Регулярные выражения”.

  • Нажимайте “Заменить все” несколько раз, пока замены не прекратятся.

  • Или более сложный вариант за один проход:

  • Найти что: ^\s*\R (пустая строка или строка с пробелами)

  • Заменить на: (оставить пустым)

  • Режим поиска: “Регулярные выражения”.

  • Это удалит все пустые строки. Если нужно оставить одну пустую строку между блоками, это потребует более сложного regex или ручной работы.

  1. Удаление специфических символов или замена текста

Цель: Избавиться от ненужных символов или провести глобальные замены.

  • Простой поиск и замена (Ctrl+H):

  • Найти что: Текст или символ, который нужно заменить/удалить.

  • Заменить на: Новый текст (или оставить пустым для удаления).

  • Режим поиска: “Обычный”.

  • Опции: “Учитывать регистр”, “Только слово целиком”.

  • Расширенный режим поиска и замены:

  • Режим поиска: “Расширенный (\n, \r, \t, \0, \x…)”.

  • Позволяет искать и заменять специальные символы:

  • \t – табуляция

  • \n – перевод строки (LF)

  • \r – возврат каретки (CR)

  • \0 – нулевой символ

  • \xNN – символ с HEX-кодом NN.

  • Пример: Заменить все символы табуляции на 4 пробела.

  • Найти что: \t

  • Заменить на: “(четыре пробела)

  • Режим поиска: “Расширенный”.

  • Регулярные выражения (самый мощный способ):

  • Режим поиска: “Регулярные выражения”.

  • Пример: Удалить все цифры из текста:

  • Найти что: \d (или [0-9])

  • Заменить на: (оставить пустым)

  • Пример: Удалить определенные символы, например, только !, ?, ., ,:

  • Найти что: [!?.,] (символы внутри квадратных скобок)

  • Заменить на: (оставить пустым)

  • Пример: Удалить все символы, не являющиеся буквами латинского алфавита, цифрами или пробелом:

  • Найти что: [^a-zA-Z0-9 ] (символ ^ в начале квадратных скобок означает “не”)

  • Заменить на: (оставить пустым)

  • Пример: Заменить “старое_слово” на “новое_слово” только если это отдельное слово:

  • Найти что: \bстарое_слово\b (\b означает границу слова)

  • Заменить на: новое_слово

Общие советы при очистке:

  • ДЕЛАЙТЕ РЕЗЕРВНЫЕ КОПИИ! Перед тем как применять массовые изменения, особенно с регулярными выражениями, сохраните копию вашего файла.

  • Тестируйте: Сначала используйте кнопку “Найти” или “Считать”, чтобы убедиться, что ваше правило поиска выделяет именно то, что нужно, прежде чем нажимать “Заменить все”.

  • Пошагово: Не пытайтесь исправить все сразу одной командой. Лучше применять очистку поэтапно.

  • Контекст языка: Помните, что для некоторых языков (например, Python) отступы критически важны. Будьте осторожны с их автоматическим изменением.


Ищете надежного партнера по веб-разработке и автоматизации? Мы помогаем бизнесу расти с помощью современных технологий, автоматизации процессов и экспертного SEO. Свяжитесь с нами, чтобы обсудить вашу задачу.

🚀 Нужна помощь с сайтом на 1С-Битрикс или Аспро?

Я работаю удалённо по всей России и СНГ. Узнайте цены и условия для вашего города:

Все регионы →