8toni8
@8toni8

Как скопировать слова между определенными символами?

Мне необходимо выполнить команду в каждой папке почтового сервера. В выдаче получил список папок. На сколько я разобрался, имя папки находится между символами "/" " и "'
Но что то у меня не как не получается собрать эти имена в список:(
Пробовал шаманить с модулем re, что то не чего не получается:(

import re

string = """('OK', [b'(\\Inbox) "/" "INBOX"', b'() "/" "&BCIENQRBBEIEPgQyBEsENQ- &BEIENQQ7BDUEMwRABDAEPAQ8BEs-"', b'(\\Spam) "/" "&BCEEPwQwBDw-"', b'(\\Sent) "/" "&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-"', b'(\\Drafts) "/" "&BCcENQRABD0EPgQyBDgEOgQ4-"', b'(\\Trash) "/" "&BBoEPgRABDcEOAQ9BDA-"', b'(\\NoInferiors) "/" "INBOX/Social"', b'(\\NoInferiors) "/" "INBOX/News Letters"'])"""

string = re.findall(r'"/" "+\D+"\'', string)

print(string)
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
Зачем же re? Необязательно импортитровать специальный модуль - думаю, можно и стандартными сплитами или партишном собрать такой список...

При помощи partition на скору руку можно и так:
string = """('OK', [b'(\\Inbox) "/" "INBOX"', b'() "/" "&BCIENQRBBEIEPgQyBEsENQ- &BEIENQQ7BDUEMwRABDAEPAQ8BEs-"', b'(\\Spam) "/" "&BCEEPwQwBDw-"', b'(\\Sent) "/" "&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-"', b'(\\Drafts) "/" "&BCcENQRABD0EPgQyBDgEOgQ4-"', b'(\\Trash) "/" "&BBoEPgRABDcEOAQ9BDA-"', b'(\\NoInferiors) "/" "INBOX/Social"', b'(\\NoInferiors) "/" "INBOX/News Letters"'])"""

res = []
st_rest = string.partition('''/" "''')[2]

while st_rest != '':
    part = st_rest.partition(""""'""")
    res.append(part[0])
    st_rest = part[2].partition('''/" "''')[2]

for r in res: print(r)

# INBOX
# &BCIENQRBBEIEPgQyBEsENQ- &BEIENQQ7BDUEMwRABDAEPAQ8BEs-
# &BCEEPwQwBDw-
# &BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-
# &BCcENQRABD0EPgQyBDgEOgQ4-
# &BBoEPgRABDcEOAQ9BDA-
# INBOX/Social
# INBOX/News Letters
...наверняка можно написать и более толково, но, как по мне, так тут проблемы вообще нету.

П.С.: и да, символы, обрамляющие названия папок, я немного расширил (дополнил предложенные в вопросе)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы