如何在Python中替换字符串中的子字符串?

时间:2018-05-20 08:12:17

标签: python python-2.7

我想从一串值中替换一个子字符串。但是,替换一个没有任何字符串组的字符串并不容易。

我有这样的数据:

context.createBuffer(1, data.length, sample_rate);

1 个答案:

答案 0 :(得分:1)

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表示:测试该单词是否在给定的replacer-dictionary d中。它查看d.keys()字典的键。找到后,它将返回字典值d[w]else它会返回单词w

结果列表ist 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)