Снова удаление пробелов в таблицах
Пытался слепить макрос из того, что смог найти на форуме (отсюда названия переменных и прочее), но не выходит.
Нужно удалить пробелы в начале и конце каждой ячейки каждой таблицы, вроде начинается нормально, а когда переходит на вторую таблицу, выдаёт ошибку «Запрашиваемый номер семейства не существует».
Вот текст, сильно не бейте, последний раз программировал на паскале в прошлом веке, синтаксиса ворд-бейсика практически не знаю
Предполагается, что перед этим был выполнен другой макрос, который удаляет пробелы до и после символа конца абзаца, так что пробелы остаются только в начале и конце ячеек таблицы.
Sub TrimCellText()
‘Удаление пробелов до и после текста в ячейке таблицы
Dim opar As Paragraph
Set opar = ActiveDocument.Paragraphs.First ‘надеюсь использовать это, чтобы определить конец документа
Dim oTbl As Table ‘Таблица, в которой будем перебирать ячейки
With Selection
.WholeStory
.HomeKey Unit:=wdStory
Selection.HomeKey Unit:=wdStory
a = 0
Do Until opar Is Nothing ‘надеюсь использовать это, чтобы определить конец документа и завершить выполнение,
‘пока не проверял даже, может, достаточно будет завершить, когда счетчик а будет равен числу таблиц в документе
If Selection.Information(wdWithInTable) Then
a = a + 1
Dim xCell As Cell ‘для перебора ячеек и выхода из таблицы
Set oTbl = ActiveDocument.Tables(a)
Set xCell = oTbl.Range.Cells(a)
Dim oCell As Cell
Set oCell = oTbl.Range.Cells(a)
‘на следующей строчке выдаётся ошибка, когда начинается обработка второй таблицы
‘с первой таблицей всё проходит на ура
For Each oCell In Selection.Tables(a).Range.Cells
oCell.Range.Text = Trim(Left(oCell.Range.Text, Len(oCell.Range.Text) — 2))
Next
Do Until xCell Is Nothing
Set xCell = xCell.Next ‘Попытка вылезти из таблицы перебором ячеек
‘уродство, знаю, а что делать? работает — не трогаю
If Not xCell Is Nothing Then Selection.MoveRight Unit:=wdCell, Count:=1, Extend:=wdMove Else: .MoveRight Unit:=wdWord, Count:=3
Loop
Else: .MoveRight Unit:=wdWord
End If
Set opar = opar.Next
Loop
End With
Selection.HomeKey Unit:=wdStory ‘поехали в начало, нам ещё документ редактировать
UWiki
Лишние пробелы – не только очень мешающий знак в документах, но и признак неопытности человека, набирающего текст. Каждый лишний пробел – это дополнительный отрицательный фактор для неряшливо оформленного документа Word. Достаточно изменить отступы полей или отступ красной строки, чтобы готовый казалось бы текст «разъехался» в разные стороны. Этого можно избежать, если на этапе набора текста не вводить лишние пробелы. Но чаще всего неряшливый текст не создаётся с нуля, а находится в интернете, например, в виде рефератов, дипломов и т.д. Что же делать? Удалять каждый пробел вручную? Не надо – Word позволяет не только вводить лишнее, но и быстро удалять его.
Как убрать пробелы в начале и конце строки
Способ 1 – самый простой
Чаще всего лишние пробелы в начале строки заменяют неопытным пользователям отступы красной строки (первой строки в абзаце). Вместо пробелов в таких случаях используйте меню Формат | Абзац …, на вкладке «Отступы и интервалы» в поле «Отступ | Первая строка» выберите «Отступ» и задайте стандартное значение – 1,27 см .
Чтобы быстро убрать все лишние пробелы и табуляторы в началах и концах строк, выделите весь текст, задайте выравнивание по центру – пробелы будут удалены. После этого задайте нужное выравнивание, например по ширине.
Способ 2 – более корректный
Будьте внимательны, чтобы не сбить разное выравнивание для разных частей текста – например по правому краю для эпиграфов, по центру для заголовков. В таких случая лучше заменять пробел и знак абзаца на знак абзаца. Выберите меню Правка | Заменить… В поле «Найти» введите пробел (нажмите на пробел). Нажмите кнопку «Больше», чтобы раскрыть диалог. Нажмите кнопку «Специальный» и появившемся меню выберите Знак абзаца . В поле «Найти» добавится текст « ^p ». В поле «Заменить на» вставьте один знак абзаца « ^p ». Нажмите кнопку «Заменить всё». Нажмите ещё раз – возможно в тексте перед абзацами были тройные пробелы.
![]()
Как убрать лишние пробелы в тексте
Лишние пробелы ставят в основном из-за того, что не знают о неразрывном пробеле, и пытаются добавить множество пробелов, чтобы буква «г.» не отделилась от года или названия города. Кстати, чтобы ввести неразрывный пробел, используйте Ctrl+Shift+Пробел – нажмите и держите Ctrl , Shift , нажмите пробел и отпустите все клавиши. Почти так же ставится инеразрывный дефис в сочетаниях типа – Ctrl+Shift+Дефис .
Способ 1 – самый простой
Чтобы убрать все лишние пробелы по всему тексту, выберите меню Правка | Заменить… В поле «Найти» введите два пробела (нажмите два раза на пробел). Будьте внимательны – возможно в поле ранее вы уже ввели пробел. В поле «Заменить на» введите один пробел. Нажмите кнопку «Заменить всё». Нажмите ещё раз – возможно в тексте были тройные пробелы.
Если ситуация совсем ужасная и в тексте пробелов очень и очень много – предварительно замените пять пробелов подряд на один пробел. После избавления от них заменяйте на одинарный пробел двойные пробелы.
Способ 2 – для продвинутых (можно в макрос записать)
Выберите меню Правка | Заменить… В поле «Найти» введите пробел, а потом введите следующее выражение:
Здесь в фигурных скобках введена цифра 2, а сразу за ней точка с запятой. Это выражение означает, что будет произведен поиск двух и более расположенных подряд вхождений того знака, который стоит перед открывающейся фигурной скобкой. В нашем случае будет произведен поиск двух и более пробелов.
Перейдите в поле «Заменить на» и введите один пробел.
Нажмите кнопку «Заменить всё». Таким образом, если будет найдено несколько подряд стоящих пробелов, то все они заменятся на один пробел.
Для того, чтобы удалить все лишние пробелы перед знаками препинания в ведите в поле «Найти» сначала пробел, а потом введите следующее выражение:
Это выражение буквально означает, что будет произведен поиск одного и более расположенных подряд пробелов, стоящих перед любым перечисленным в квадратных скобках знаком препинания.
Перейдите в поле «Заменить на» и введите \1 (здесь единица означает порядковый номер выражения, заключенного в круглые скобки).
Нажмите кнопку «Заменить всё».
Так вы избавитесь от рутины ручных действий, которые, увы, неизбежны при редактировании любых документов Word, особенно при поиске лишних пробелов в тексте.
Как быстро убрать лишние пробелы в Microsoft Word?
Проблема двойных, тройных и так далее пробелов в тексте – весьма распространенная. Один слишком торопится, набирая текст; второй – копирует нужный материал из интернет-источников; третий считает, что «красная строка» нового абзаца создается исключительно неоднократным тыканьем по самой большой кнопоньке на клавиатуре. Конечно, не все и не всегда обращают внимание на наличие таких пробелов в тексте.
Но если ваша работа связана с приведением чужих статей в читабельный вид, то знать, как быстро избавиться от этих «белых дыр», просто необходимо.
Конечно, можно тапнуть по иконке непечатаемых символов и попробовать «найти кота». Этот способ вполне жизнеспособен, если вы обладаете свободным временем, зорким глазом, да и сам текст небольшого размера. А если перед вами 100, 200 страниц?
Тут однозначно нужен другой способ.
Он есть и он довольно прост.
1. Комбинацией клавиш CTRL + H вызываем окно поиска и замены. Нажимаем «Больше», чтобы раскрыть вкладку с нужными параметрами.

2. Ставим галочку «Подстановочные знаки».

3. В строке «Найти» вводим следующее значение ПРОБЕЛ в английской раскладке. Обратите внимание, что ПРОБЕЛ не нужно писать буквами. Просто поставьте пробел, как вы обычно делаете это при наборе текста. Двойка и точка с запятой в фигурных скобках (ищите их, кстати, на кириллических Х и Ъ) означают, что будет произведен поиск двух и более подряд стоящих пробелов. То есть, не нужно будет повторять поиск для поиска тройных или десятикратных пустот (а что, такие писатели встречаются чаще, чем хотелось бы) . При помощи этой функции мы заменим все повторяющиеся пробелы на одинарные. Поэтому в строке «Заменить на» нужно поставить один пробел.

4. После нажатия кнопки «Заменить все», произойдет волшебство и появится окно с отчётом, сколько замен было произведено (из чего можно сделать определённый вывод о степени пробелонедержания первоисточника) .
Как убрать пробелы в списке
@VasylKolomiets думаю, имелись ввиду значения, которые не содержат полезной нагрузки в виде символов.
9 окт 2023 в 7:15
\x00 — символ NULL \x01 — символ START OF HEADING \x02 — символ START OF TEXT \x03 — символ END OF TEXT \x04 — символ END OF TRANSMISSION \x05 — символ ENQUIRY \x06 — символ ACKNOWLEDGE \x07 — символ BELL \x08 — символ BACKSPACE \t — символ HORIZONTAL TAB \n — символ LINE FEED \x0b — символ VERTICAL TAB
9 окт 2023 в 7:46
Пайтон позволяет писать почти по английски. Вам надо отфильтровать пустые строки? Так и пишем — filter() :
words = [' ', 'hello', ' '] filtered_words = list(filter(None, words)) print(filtered_words)
Ну использовать list() нужно если вам нужен новый список, а если просто дальше обрабатывать в цикле поэлементно, то можно оставить в виде генератора filter(None, words) .
В то же время по определению в пайтоне пустая строка это », а это — ‘ ‘ — строка пробелов из одного пробелов )
Работу кода первого ответа можно повторить так:
words = [' ', 'hello', ' '] filtered_words = list(filter(str.strip, words)) print(filtered_words)
Если же действительно надо убрать строки состоящие из пробелов (а не из спецсимволов в т.ч.) то пишем так:
words = [' ', 'hello', '\n'] filtered_words = list(filter(lambda x : x.strip(' '), words)) print(filtered_words)
['hello', '\n']
Если есть желание — проверьте какой из ответов работает быстрее.