替换作为给定的字符串值的字典字符串和替换项。Python

2024-05-18 09:39:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典,其中的字符串将被替换为keys,它的替换为值。除了逐个查看字符串标记外,是否有更好/更快的方法进行替换?在

我一直是这样做的:

segmenter = {'foobar':'foo bar', 'withoutspace':'without space', 'barbar': 'bar bar'}

sentence = "this is a foobar in a barbar withoutspace"

for i in sentence.split():
  if i in segmenter:
    sentence.replace(i, segmenter[i])

Tags: 方法字符串in标记字典foobarspace
2条回答

re.sub可以调用返回替换的函数

segmenter = {'foobar':'foo bar', 'withoutspace':'without space', 'barbar': 'bar bar'}
sentence = "this is a foobar in a barbar withoutspace"

import re

def fn(match):
    return segmenter[match.group()]

print re.sub('|'.join(re.escape(k) for k in segmenter), fn, sentence)

字符串在python中是不可变的。因此,str.replace返回一个新字符串,而不是修改原始字符串。您可以使用str.join()并在此处列出理解:

>>> segmenter = {'foobar':'foo bar', 'withoutspace':'without space', 'barbar': 'bar bar'}
>>> sentence = "this is a foobar in a barbar withoutspace"

>>> " ".join( [ segmenter.get(word,word) for word in sentence.split()] )
'this is a foo bar in a bar bar without space'

str.replace的另一个问题是,它还将把"abarbarb"这样的单词替换为

"abar barb"。在

相关问题 更多 >