我正在尝试遍历字典并使用 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/']}
