Форум сайта python.su
есть вот такая строка ‘ dd ’ вот написал маленькую функцию для удалению пробелов .
def f(a): z='' for s in a: if s!=' ': z=z+s return z print(f(" aaa "))
' b bb '
'b bb'
Отредактировано alexswsw (Дек. 19, 2016 03:00:00)
Офлайн
Если программа учебная и вы не хотите использовать готовую функцию strip принципиально, то как то так
from itertools import dropwhile, takewhile def trim(s, ch=" "): last = None for i, _ in takewhile(lambda x: x[1] == ch, enumerate(reversed(s))): last = i def _trim(s): for i in dropwhile(lambda x: x == ch, s): yield i if last: predicate = lambda x: x[0] < last else: predicate = lambda x: True res = takewhile(predicate, enumerate(_trim(s))) return "".join(x[1] for x in res) print(trim(" v1444 11111 ")) print(trim(" v1444 11111")) print(trim("v1444 11111 ")) print(trim("v1444 11111"))
Офлайн
import re x=' Очень много длинных и маленьких пробелов ' string=' '.join(re.findall(r'\w+',x)) print(string)
Офлайн
Если необходимо удалить пробелы только в начале и конце строки, а внутри оставить, даже если их несколько подряд, то поможет такая функция:
import re def strip_outside_space(line: str) -> str: return re.search(r'^\s*(.*?)\s*$', line).group(1) print(strip_outside_space(' with s p a c e s ')) print(strip_outside_space('without spaces'))
Отредактировано Altair (Дек. 23, 2016 13:03:09)
Офлайн
а подскажите как сделать так чтобы пробелы внутри текста сохранить.просто пробежать по строке с начала, а затем с конца, запомнив позиции первых не пробельных символов. Дальше используем срез…
Офлайн