alibek
Это не пробел.
Это символ U+00A0 и он не находится внутри \s.
alibek
Да, при отправке в форум символ заменился на обычный пробел.
Исходно это был символ неразрывного пробела.
>>> import unicodedata >>> >>> unicodedata.name('\xa0') 'NO-BREAK SPACE' >>> >>> '\xa0'.isspace() True >>> >>> import re >>> >>> re.sub(r'\s+', 'x', 'abc \xa0 def') 'abcxdef' >>>
alibekТак питон интерпретируемый язык, в нём никто такой ерундой не занимается. Это не ассемблер, где каждый бит надо считать. Как только от объектов отвязываются все имена, объект сразу же удаляется из памяти сборщиком мусора, который постоянно там всё чистит. Там всё для этого специально сделано изначально.
Как минимум они занимают место в каком-нибудь внутреннем указателе или словаре для области видимости функции, уж не знаю, как в питоне это реализовано.
Питон это не перл даже близко. И поэтому тупость из перла нести в питон, какие-то пережитки, это закончится тем, что ты будешь думать про питон, как будто это перл, а это не перл вообще и там вообще другие механизмы.
Короче, это ошибка, переносить какие-то знания из одного языка в другой язык. Потому что можно вот так хуйню какую-то думать, а её там вообще нет. Регулярные выражения те же различаются, там всё различается.
Символы можно вырезать двумя способами
>>> import re >>> >>> re.sub(r'[ac\xa0]+', 'x', 'abc \xa0 def') 'xbx x def' >>> >>> re.sub(r'[ac\u00a0]+', 'x', 'abc \xa0 def') 'xbx x def' >>>
А вообще, тебе придётся читать всё по питону, конечно. Если ты думаешь, что ты всё с перла в питоне найдёшь, ты глубоко заблуждаешься. Всякую чушь будешь пороть только, что неразрывный пробел не входит в пробельные символы (там ещё много всяких различий) и всякое такое, а ребята будут над тобой смеяться.