Как заменить подстроку в строке в Python? - PullRequest
0 голосов
/ 20 мая 2018

Я хочу заменить подстроку из строки значений. Однако заменить одну строку без какой-либо группы строк непросто.

У меня есть такие данные:

S.no      Name                     Expected Result
------    ----------------------   ----------------------
1         2341 blvd                2341 Boulevard
2         648 s Kingston rd        648 S Kingston Road
3         sw Beverly st            SW Beverly Street

1 Ответ

0 голосов
/ 20 мая 2018
def wordreplace(s, d):
    """Replaces words in string by dict d. # Thank you @Patrick Artner
    for improving dict call to d.get(w, w)!"""
    return ' '.join([ d.get(w, w) for w in s.split()])


# this was my old version:
# def wordreplace(s, d):
#    """Replaces words in string by dict d."""
#    return ' '.join([ d[w] if w in d else w for w in s.split()])

d = {'blvd': 'Boulevard', 'st': "Street", 'sw': 'SW', 's': "S", 'rd': '
Road'}

s1 = "2341 blvd"

s2 = "648 s Kingston rd"

s3 = "sw Beverly st"

wordreplace(s1, d)
# '2341 Boulevard'

wordreplace(s2, d)
# '648 S Kingston Road'

wordreplace(s3, d)
# 'SW Beverly Street'

s.split() по умолчанию разделяется на один пробел и возвращает список слов строки s.Каждое слово загружается в переменную w.for w in s.split() часть выражения списка.Часть перед for определяет, что собирается в результирующем списке.

if w in d означает: проверить, находится ли слово в данном словаре замены d.Он смотрит на d.keys() ключи словаря.При обнаружении возвращает значение словаря d[w].else возвращает само слово w.

Полученный список join редактируется с использованием ' ' в качестве соединяющего элемента, поэтому список слов преобразуется в строку.

Выражения списка очень удобны и часто приводят к таким однострочным функциям.Настоятельно рекомендуем вам изучить их.

Вместо того, чтобы вводить все ключевые значения в словарную форму, вы также можете сделать:

keys = [ # list here all keys ]
vals = [ # list here all corresponding values in the right order ]
d = {k: vals[i] for i, k in enumerate(keys)}

Итак, вы снова можете использовать силу спискавыражения для создания с ними словаря.

# abstract it to a function
def lists2dict(keys_list, vals_list):
    return {k, vals_list[i] for i, k in enumerate(key_list)}

# and then call:
d = lists2dict(keys, vals)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...