Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 19, 2016 02:58:57

alexswsw
Зарегистрирован: 2016-12-05
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по строкам

есть вот такая строка ‘ 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)

Офлайн

#2 Дек. 19, 2016 05:11:16

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

вопрос по строкам

Если программа учебная и вы не хотите использовать готовую функцию 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"))



Офлайн

#3 Дек. 22, 2016 19:48:58

DesSolo
Зарегистрирован: 2016-12-22
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по строкам

 import re
x='           Очень    много длинных         и маленьких пробелов          '
string=' '.join(re.findall(r'\w+',x))
print(string)

Офлайн

#4 Дек. 23, 2016 13:02:00

Altair
От:
Зарегистрирован: 2016-12-23
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по строкам

Если необходимо удалить пробелы только в начале и конце строки, а внутри оставить, даже если их несколько подряд, то поможет такая функция:

 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)

Офлайн

#5 Дек. 23, 2016 13:48:08

Py_User
Зарегистрирован: 2016-12-16
Сообщения: 15
Репутация: +  1  -
Профиль   Отправить e-mail  

вопрос по строкам

а подскажите как сделать так чтобы пробелы внутри текста сохранить.
просто пробежать по строке с начала, а затем с конца, запомнив позиции первых не пробельных символов. Дальше используем срез…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version