#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']