поиск и замена слов прописными и строчными буквами одного и того же слова - PullRequest
0 голосов
/ 25 сентября 2018

Смысл этого скрипта состоит в том, чтобы заменить несколько строк слов, несмотря на то, что слово начинается со строчной или заглавной буквы.

Пример кода:

import re
from re import sub

def word_replace(text, replace_dict):
    rc = re.compile(r"[A-Za-z_]\w*")
def translate(match):
    word = match.group(0) 
    return replace_dict.get(word, word)
return rc.sub(translate, text)

old_text = """Bob: say why don't you play ball
jeff: i have no idea
bob: well maybe you should """

replace_dict = {
"Bob" : 'bob baller',
"debug" : "fix",
'ship': 'boat'
 }

что яget is:

bob baller: say why don't you play ball
jeff: i have no idea
bob: well maybe you should 

я хотел бы получить из текста "Bob" и "bob", затем замените их обоих на bob baller.

Чтобы прояснить вопроснемного больше, что я пытаюсь сделать, это заменить слово «bob» (или любое слово в replace_dict), если оно в верхнем или нижнем регистре.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Скомпилируйте свое регулярное выражение с дополнительным аргументом, подобным этому

re.compile ("Ваше регулярное выражение идет сюда", re.IGNORECASE)

Edit 1:

Хорошо, получается, что ваш replace_dict сформирован неправильно из-за непоследовательного использования двойных и одинарных кавычек.Вот рабочий код и ожидаемый результат:

bob_baller.py

import re

def word_replace(text, replace_dict):
    rc = re.compile(r"[A-Za-z_]\w*")

    def translate(match):
        word = match.group(0).lower()
        print(word)
        return replace_dict.get(word, word)

    return rc.sub(translate, text)

old_text = """Bob: say why don't you play ball
jeff: i have no idea
bob: well maybe you should """

replace_dict = {
    "bob" : "bob baller",    # Everything is double quoted
    "debug" : "fix",
    "ship": "boat"
 }

output = word_replace(old_text, replace_dict)
print(output)

$ python bob_baller.py
bob baller: say why don't you play ball
jeff: i have no idea
bob baller: well maybe you should 
0 голосов
/ 25 сентября 2018

Вы можете преобразовать ключи replace_dict в нижний регистр, а затем сопоставить оба слова и заменить.как матч за Боба и Боба тоже.

...