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

#python #file #text #replace #letter

#python #файл #текст #заменить #буква

Вопрос:

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

fooledDog и мне нужно одурачить D ****текст строки продолжается вставкой » » whateveredJ и мне нужно что угодно J *******текст строки продолжается вставкой » «

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

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

Комментарии:

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

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

3. да, это правильно @Blckknight

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

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

Ответ №1:

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

 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' и пробел, за которым следует заглавная буква из группы захвата.

Ответ №2:

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

 import re

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

Вывод:

 ['Camel', 'Case', 'Test123']