我有以下字典串列
d =
[
{
"Business": "Company A",
"Category": "Supply Chain",
"Date": "Posted Date\nDecember 21 2021",
},
{
"Business": "Company B",
"Category": "Manufacturing",
"Date": "Posted Date\nDecember 21 2021",
}
]
我正在嘗試使用從字典中re洗掉Posted Date\n字串,但收到以下錯誤:
TypeError: expected string or bytes-like object
我的代碼如下:
regex = re.compile('Posted Date\n')
filtered = [i for i in d if not regex.match(i)]
print(filtered)
如果我在沒有字典的普通字串串列上做同樣的事情,它就可以作業。我是否必須先將字典轉換為字串?
謝謝!
uj5u.com熱心網友回復:
假設這d是字典串列,那么您將遍歷字典本身。所以對于第一次迭代:
i = {
"Business": "Company A",
"Category": "Supply Chain",
"Date": "Posted Date\nDecember 21 2021",
}
事實上,你不能在字典上使用正則運算式。您需要更深入地遍歷字典中的鍵和值。但是,如果您在回圈時更改字典,這也可能導致 RunTimeErrors。
import re
d = [{
"Business": "Company A",
"Category": "Supply Chain",
"Date": "Posted Date\nDecember 21 2021",
}, {
"Business": "Company B",
"Category": "Manufacturing",
"Date": "Posted Date\nDecember 21 2021",
}]
regex = re.compile('Posted Date\n')
for dikt in d:
for key, value in list(dikt.items()): # make a list to prevent RuntimeError
if regex.match(value):
del dikt[key]
這將Date完全省略密鑰:
d = [{
"Business": "Company A",
"Category": "Supply Chain",
}, {
"Business": "Company B",
"Category": "Manufacturing",
}]
如果您只想擺脫“發布日期\n”,這就足夠了:
d = [{
"Business": "Company A",
"Category": "Supply Chain",
"Date": "Posted Date\nDecember 21 2021",
}, {
"Business": "Company B",
"Category": "Manufacturing",
"Date": "Posted Date\nDecember 21 2021",
}]
for dikt in d:
for key, value in dikt.items():
dikt[key] = value.replace('Posted Date\n', '') # replace string from all our values stupidly :)
結果:
d = [{
"Business": "Company A",
"Category": "Supply Chain",
"Date": "December 21 2021",
}, {
"Business": "Company B",
"Category": "Manufacturing",
"Date": "December 21 2021",
}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/389354.html
上一篇:在字串Js中搜索模式
