Форум сайта python.su
Здравствуйте, как сделать? спасибо
ll = r'\\Государственная граница\\Государственной границе\\Государственную границу\\ РФ' spl = ll.split('\\\\') if ll.strip().startswith('\\\\'): print([f'{i}{spl[-1]}' for i in spl[1:-1]]) # то что нужно = ['Государственная граница РФ', 'Государственной границе РФ', 'Государственную границу РФ'] ll = r'Правительство \\России\\РФ\\' spl = ll.split('\\\\') if ll.strip().endswith('\\\\'): ?? ['Правительство России', 'Правительство РФ'] ll = r'паспорт \\гражданина\\гражданки\\ РФ' spl = ll.split('\\\\') if not ll.strip().startswith('\\\\') and not ll.strip().endswith('\\\\'): ?? ['паспорт гражданина РФ', 'паспорт гражданки РФ']
Офлайн
>>> def split(text): ... if text.startswith(r'\\'): ... parts = text.split(r'\\') ... parts.remove('') ... out = None, parts[:-1], parts[-1] ... elif text.endswith(r'\\'): ... parts = text.split(r'\\') ... parts.remove('') ... out = parts[0], parts[1:], None ... elif r'\\' in text: ... parts = text.split(r'\\') ... out = parts[0], parts[1:-1], parts[-1] ... else: ... raise ValueError('Can\'t split text: ' + text) ... return out ... >>> def compose(data): ... out = [] ... text_start = data[0] or '' ... text_end = data[-1] or '' ... for text_middle in data[1]: ... text = text_start + text_middle + text_end ... out.append(text) ... return out ... >>> def generate(text): ... return compose(split(text)) ... >>> generate(r'\\Государственная граница\\Государственной границе\\Государственную границу\\ РФ') ['Государственная граница РФ', 'Государственной границе РФ', 'Государственную границу РФ'] >>> >>> generate(r'Правительство \\России\\РФ\\') ['Правительство России', 'Правительство РФ'] >>> >>> generate(r'паспорт \\гражданина\\гражданки\\ РФ') ['паспорт гражданина РФ', 'паспорт гражданки РФ'] >>>
Отредактировано py.user.next (Июль 2, 2024 10:40:50)
Офлайн