如何使用Python将重复的行分组为一个变量,并在每次之后打印第二行
使用python,我想通读JSON,找到以相同单词开头的行,并且只显示行中的最后一个单词。然后将这些重复的行存储到一个变量中,所以当我说print时,这些行只打印一次,而不是重复的次数。在这个组变量之后,打印重复行后面2行的部分行 这很可能没有任何意义。哈哈 以下是我目前掌握的代码: 示例文本文件 我想对以ID字段开头的行进行分组,并打印名称行后面的第二行如何使用Python将重复的行分组为一个变量,并在每次之后打印第二行,python,dictionary,Python,Dictionary,使用python,我想通读JSON,找到以相同单词开头的行,并且只显示行中的最后一个单词。然后将这些重复的行存储到一个变量中,所以当我说print时,这些行只打印一次,而不是重复的次数。在这个组变量之后,打印重复行后面2行的部分行 这很可能没有任何意义。哈哈 以下是我目前掌握的代码: 示例文本文件 我想对以ID字段开头的行进行分组,并打印名称行后面的第二行 { "theme": land1, "ID": "biosphere", "Url": "www.lan
{
"theme": land1,
"ID": "biosphere",
"Url": "www.land.com",
"name": "mangrove",
},
{
"theme: water1,<br>
"ID": "hydrosphere",<br>
"Url": "www.water.com",<br>
"name": "Pacific",<br>
},
{
"theme": "air1,
"ID": "atmosphere",
"Url": "www.air.com",
"name": "Oxygen",
},
{
"theme": land2,
"ID": "biosphere",
"Url": "www.land.com",
"name": "oak",<
},
{
"theme: water2,
"ID": "hydrosphere",
"Url": "www.water.com",
"name": "Atlantic",
},
{
"theme": "air2,
"ID": "atmosphere",
"Url": "www.air.com",
"name": "Nitrogen",
},
}
我想要的输出:
这可能吗?建议?提前谢谢 将其视为JSON文件而不是文本文件
您可以根据匹配的键轻松修改JSON文件和获取值,并将其聚合。将其视为字典列表,而不是要解析的文本行。将该文件作为json导入,然后循环遍历列表中的每个项目,获取创建自己的字典所需的每个元素
在开始之前,您可能需要删除这些语句。如果您不想使用JSON,请执行类似的操作:
f = open("myfile.txt")
myDict = {}
for line in f:
if line.strip().startswith('"ID":'):
key = line.split('"')[3]
if line.strip().startswith('"name":'):
value = line.split('"')[3]
myDict.setdefault(key,[]).append(value)
for key in myDict:
print key
print '\n'.join(myDict[key])
print
你确定不能将数据解析为json吗?我不熟悉json,但我会研究一下。嗨,弗雷德!这很好用。非常感谢!但是,我不理解代码。您介意解释一下为什么这样做吗?您好@afrocodes,当然:.split“”会在每行拆分一行并返回一个列表。[3] 以生物圈列表的第四个元素或红树林为例。myDict.setdefaultkey,[]。appendvalue类似于d[key]=d[key]。appendvalue例外,如果未定义d[key],它将返回[]。我只添加了这些语句,因为这是在单独的行上拆分行的唯一方法。我将进一步研究字典。我知道它看起来更像dict而不是json,我建议看看示例dict和json示例,了解一下简单的想法:
biosphere
mangrove
hydrosphere
Pacific
atmosphere
Oxygen
biosphere
oak
hydrosphere
Atlantic
atmosphere
Nitrogen
biosphere
mangrove
oak
hydrosphere
Pacific
Atlantic
atmosphere
Oxygen
Nitrogen
f = open("myfile.txt")
myDict = {}
for line in f:
if line.strip().startswith('"ID":'):
key = line.split('"')[3]
if line.strip().startswith('"name":'):
value = line.split('"')[3]
myDict.setdefault(key,[]).append(value)
for key in myDict:
print key
print '\n'.join(myDict[key])
print