Как посчитать длину строки без управляющих символов
Как вернуть длину строки не считая управляющие символы? Например строка будет 'Denis\nShamra\v\t\r' len строки должeн равняться 11. Подскажите можно ли тут использовать метод строки какой-то или только можно использовать регулярные выражения?
Ответы (3 шт):
Автор решения: gil9red
→ Ссылка
Можно использовать регулярное выражение по которому все whitespace будут удалены
\s- это тоже самое, что [ \f\n\r\t\v]. Т.е. еще и пробелы будут удалены
Пример:
import re
text = 'Denis\nShamra\v\t\r'
new_text = re.sub(r'\s', '', text)
print(len(new_text))
# 11
Автор решения: Павел
→ Ссылка
Можно воспользоваться тем, что все управляющие символы находятся в начале таблицы Unicode, поэтому их числовое представление через ord не превышает 31:
a = 'Denis\nShamra\v\t\r'
print(len(''.join(x for x in a if ord(x) >= 32)))
Вывод:
11
Автор решения: Namerek
→ Ссылка
from unicodedata import category
a = 'Denis\nShamra\v\t\r'
print(len(a))
print(len(''.join(filter(lambda x: category(x) != 'Cc', a))))
# 15
# 11