Ubuntu 18.04 Запуск списка автозагрузки

В python:

Поскольку определение разделения не является точно таким же для обоих разделителей (точка должна быть включена, а в пробеле нет), вам нужно выполнить два шага:

В длинном однострочном файле:

python3 -c "s = open('f').read().strip(); [print(s[:n]) for n in reversed(sorted([i+1 for i, c in enumerate(s) if s[i] == '·']+[i for i, c in enumerate(s) if s[i] == ' ']+[len(s)]))]"

, где 'f' - путь к вашему файлу, между (одиночными) кавычками.

Или еще читаемый в сценарии:

#!/usr/bin/env python3

# read the file
s = open("f").read().strip()
# find the indexes of the character "·" in the line, add 1 to include the dot
n1 = [i+1 for i, c in enumerate(s) if s[i] == "·"]
# find the indexes of spaces in the line
n2 = [i for i, c in enumerate(s) if s[i] == " "]
# combine and sort the found indexes, print the line up to each of the indexes
[print(s[:n]) for n in reversed(sorted(n1+n2)+[len(s)])]

Чтобы точно соответствовать вашему примеру, найденные индексы отсортированы по порядку, от последнего к первому индексу.

В обоих случаях (как и ожидалось) результат:

Hel·lo my name is E·ric
Hel·lo my name is E·
Hel·lo my name is
Hel·lo my name
Hel·lo my
Hel·lo
Hel·

EDIT

Немного более сложным (и более гибким) будет:

#!/usr/bin/env python3
# read the file
s = open('f').read().strip()
#--- set your delimiter(s) + the split rules below in the format rules = [(<character>, <additional_index>)]
rules = [('·', 1), (' ', 0)]
#---
[print(s[:n]) for n in [len(s)]+sorted(sum([[i+r[1] for i, c in enumerate(s) if s[i] == r[0]] for r in rules], []))[::-1]]
[d10 ], который дает вам «свободу», чтобы легко добавлять больше разделителей и устанавливать правила, чтобы либо включать символ, либо не в разделенную строку.

например

s = 'This|is|a|string'

icw:

rules = [('|', 0)]

выведет:

This|is|a|string
This|is|a
This|is
This

но

s = 'This|is|a|string'

icw:

rules = [('|', 1)]

выведет: [!d17 ]

This|is|a|string
This|is|a|
This|is|
This|

Примечание

Дополнительный len(s) к списку должен включать начальную строку на выходе.

1
задан 15 May 2018 в 18:13

0 ответов

Другие вопросы по тегам:

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