Проблема в том, что теперь у меня есть строка, в которой некоторые слова склеены:
FooledDog и мне нужно одурачить текст D****string, который продолжается вставкой " " whatedJ и мне нужно независимо J*******текст строки продолжается со вставленным " "
string = string.replace("edD","ed D")
string = string.replace("edJ","ed J")
но мне нужно вместо "D" и "J" иметь любой возможный символ, чтобы избежать жесткого кодирования значений здесь, чтобы код работал с любой буквой или цифрой в этой позиции.
Чтобы уточнить, вы хотите поставить пробел только между строчной ed
и заглавной буквой? Вы не хотите выделять другие комбинации, например "McDonalds"
=>"Mc Donalds"
или "educate"
=>"ed ucate"
.
да, это правильно @Blckknght
@Blckknght, твой ответ сработал! Я так взволнован этим, теперь мне просто нужны разные строки, как вы поняли мой пример, я собираюсь продолжить его, теперь все, что мне нужно, это в одной строке, чтобы textодурачил на одну строчку потом Псаtext****ed в другой строке / строка затем на другой строке ****текст***что угодно на другой строке, конечно текст будет отличаться от примера: но он должен заканчиваться на ed или на ed) и тогда мне нужна новая строка и все готово! :)
@whtr: я не уверен, что означают все ваши *, но если мой ответ (или другой) решил проблему для вас, примите его, нажав на галочку.
Я не совсем понимаю ваш вопрос, но, кажется, у вас есть слова в верблюжьем регистре, которые вы хотите разделить. Если это так, попробуйте следующее:
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'
и пробел, за которым следует заглавная буква группы захвата.
Можете ли вы предоставить таблицу с образцами входных и выходных данных? В зависимости от сложности ввода, это может быть почти невозможно решить идеально.