我有一个 JSON 文件中的艺术家列表。我想删除文件中除名称之外的所有代码。代码如下所示:
},
{
"name": "Sadek",
"mbid": "52940c47-5d0a-4995-bbf8-361a365a48a0",
"match": "0.100799",
"url": "https://www.last.fm/music/Sadek",
"image": [
{
"#text": "https://lastfm.freetls.fastly.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png",
"size": "small"
},
{
我想删除除“名称”值(Sadek)的包含字符串之外的所有内容。
我能得到的最接近的是使用
.*("name": *).*
在 Notepad++ 中查找名称值,但我无法找到删除除名称值的包含字符串之外的所有内容的方法。
这里有 2 个 Python 解决方案。仅使用您显示的示例进行编写和测试。
第一个解决方案:在
re.findall
方法中使用正则表达式。
value="""},
{
"name": "Sadek",
"mbid": "52940c47-5d0a-4995-bbf8-361a365a48a0",
"match": "0.100799",
"url": "https://www.last.fm/music/Sadek",
"image": [
{
"#text": "https://lastfm.freetls.fastly.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png",
"size": "small"
},
{
"""
re.findall(r'(?:^.*?{\s+)("name":[^,]*,)(?:.*$)',value,re.M)
['"name": "Sadek",']
第二个解决方案:使用
json
库。
import json
with open('Input_file.json', 'r') as fcc_file:
fcc_data = json.load(fcc_file)
for j in fcc_data:
if j == 'name':
print(f'{j} {fcc_data[j]}')