Skip to main content
 首页 » 编程设计

python之如何使用 Re 替换字典值的子字符串

2025年05月04日15exmyth

我正在尝试遍历字典并使用 Re 替换子字符串,但我的字典以空值结尾。我在下面概述了我的代码:

mydict = { 
    'Getting links from: https://www.foo.com/':  
    [ 
        '├─BROKEN─ http://www.broken.com/', 
        '├─BROKEN─ http://www.set.com/', 
        '├─BROKEN─ http://www.one.com/' 
    ], 
    'Getting links from: https://www.bar.com/':  
    [ 
        '├─BROKEN─ http://www.broken.com/' 
    ] 
} 
 
val = "├─BROKEN─" 
 
for k, v in mydict.iteritems(): 
  for i, s in enumerate(v): 
      v[i] = re.sub(r'.*├─BROKEN─', '', val) 

此代码生成一个没有值的字典:

mydict = { 
    'Getting links from: https://www.foo.com/':  
    [ 
        '', 
        '', 
        '' 
    ], 
    'Getting links from: https://www.bar.com/':  
    [ 
        '' 
    ] 
} 

我想要的是:

mydict = { 
    'Getting links from: https://www.foo.com/':  
    [ 
        'http://www.broken.com/', 
        'http://www.set.com/', 
        'http://www.one.com/' 
    ], 
    'Getting links from: https://www.bar.com/':  
    [ 
        'http://www.broken.com/' 
    ] 
} 

我错过了什么?

请您参考如下方法:

这里不需要正则表达式,看起来有点贵。使用字符串 replace() 和 strip():

mydict = { 
    'Getting links from: https://www.foo.com/':  
    [ 
        '├─BROKEN─ http://www.broken.com/', 
        '├─BROKEN─ http://www.set.com/', 
        '├─BROKEN─ http://www.one.com/' 
    ], 
    'Getting links from: https://www.bar.com/':  
    [ 
        '├─BROKEN─ http://www.broken.com/' 
    ] 
} 
 
val = "├─BROKEN─" 
 
for k, v in mydict.items(): 
    mydict[k] = [x.replace(val, '').strip() for x in v] 
 
print(mydict) 
 
# {'Getting links from: https://www.foo.com/': ['http://www.broken.com/', 'http://www.set.com/', 'http://www.one.com/'], 
#  'Getting links from: https://www.bar.com/': ['http://www.broken.com/']}