Замена или введение пробела после последовательности известных или неизвестных букв, а затем написание содержимого новой строки

Проблема в том, что теперь у меня есть строка, в которой некоторые слова склеены:

FooledDog и мне нужно одурачить текст D****string, который продолжается вставкой " " whatedJ и мне нужно независимо J*******текст строки продолжается со вставленным " "

string = string.replace("edD","ed D")
string = string.replace("edJ","ed J")

но мне нужно вместо "D" и "J" иметь любой возможный символ, чтобы избежать жесткого кодирования значений здесь, чтобы код работал с любой буквой или цифрой в этой позиции.

Можете ли вы предоставить таблицу с образцами входных и выходных данных? В зависимости от сложности ввода, это может быть почти невозможно решить идеально.

Paymahn Moghadasian 07.04.2019 23:25

Чтобы уточнить, вы хотите поставить пробел только между строчной ed и заглавной буквой? Вы не хотите выделять другие комбинации, например "McDonalds"=>"Mc Donalds" или "educate"=>"ed ucate".

Blckknght 07.04.2019 23:39

да, это правильно @Blckknght

whtr 09.04.2019 17:35

@Blckknght, твой ответ сработал! Я так взволнован этим, теперь мне просто нужны разные строки, как вы поняли мой пример, я собираюсь продолжить его, теперь все, что мне нужно, это в одной строке, чтобы textодурачил на одну строчку потом Псаtext****ed в другой строке / строка затем на другой строке ****текст***что угодно на другой строке, конечно текст будет отличаться от примера: но он должен заканчиваться на ed или на ed) и тогда мне нужна новая строка и все готово! :)

whtr 09.04.2019 17:48

@whtr: я не уверен, что означают все ваши *, но если мой ответ (или другой) решил проблему для вас, примите его, нажав на галочку.

Blckknght 09.04.2019 20:18
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
29
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

import re

name = 'CamelCaseTest123'
splitted = re.sub('(?!^)([A-Z][a-z]+)', r' \1', name).split()

Выход:

['Camel', 'Case', 'Test123']
Ответ принят как подходящий

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

import re

text = "fooledDog whateveredJob"
fixed_text = re.sub(r'ed([A-Z])', r'ed \1', text)
print(fixed_text) # prints "fooled Dog whatevered Job"

Шаблон ищет буквы 'ed' в нижнем регистре, за которыми следует любая заглавная буква (которая захватывается). Замена — это 'ed' и пробел, за которым следует заглавная буква группы захвата.

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