Удаление области понимания списка в python - PullRequest
0 голосов
/ 26 октября 2018

Я до сих пор разбираюсь в понимании списков в python, но я верю, что это то, что мне нужно для этой задачи.

У меня есть строка, которую я бросил в список. Я хочу удалить пробелы, если оба соседних элемента представляют собой строчные буквы алфавита.

* 1005 например *

 INPUT> Bartho lemew The Rhinoceros
 OUTPUT> Bartholemew The Rhinoceros

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Очень похоже на другой ответ

import re
a='Bartho lemew The Rhinoceros asdas'
print(re.sub('([A-Z][a-z]*)(\s)([a-z])(\w*)',r'\1\3\4',a))
0 голосов
/ 26 октября 2018

Я думаю, что регулярные выражения немного перегружены в stackoverflow для вопросов начинающих.Для этого вопроса, хотя они определенно правильный выбор.Тем не менее, вы также попросили составить список, который решает проблему, и кто я такой, чтобы отказать вам?

def remove_spaces(s):
    s = s.join(['A', 'A'])
    return ''.join([c for i, c in enumerate(s)
                        if c!=' ' or not (s[i-1]+s[i+1]).islower()][1:-1])
0 голосов
/ 26 октября 2018

Я думаю, re.sub было бы лучше здесь:

import re

def remove_spaces(string):
    return re.sub(r'(?<=[a-z]) (?=[a-z])', '', string)

print(remove_spaces('Bartho lemew The Rhinoceros'))
# Bartholemew The Rhinoceros
...