Python:如何从位置添加文件内容到列表

时间:2016-04-28 09:51:00

标签: python json list

我有一个JSON文件,其中包含各自包含元素的对象。使用我的python脚本,我只保留我想要的对象,然后将我想要的元素放在列表中。但该元素有一个前缀,我想从列表中删除。 后脚本JSON看起来像这样:

{

      "ip_prefix": "184.72.128.0/17",

      "region": "us-east-1",

      "service": "EC2"
}

" IP /掩码"是我想要保留的。列表看起来像这样:

'" ip_prefix":" 23.20.0.0/14" ,'

那么我该怎么办才能在列表中保留" 23.20.0.0/14"

以下是代码:

json_data = open(jsonsourcefile)
data = json.load(json_data)
print (destfile)
d=[]

for objects in (data['prefixes']):
    if servicerequired in json.dumps(objects):
        #print(json.dumps(objects, sort_keys=True, indent=4))
        with open(destfile, 'a') as file:
            file.write(json.dumps(objects, sort_keys=True, indent=4 ))
with open(destfile, 'r') as reads:
    liste = list()
    for strip in reads:
        if "ip_prefix" in strip:
            strip = strip.strip()
            liste.append(strip)

    print(liste)

谢谢, dersoi

3 个答案:

答案 0 :(得分:0)

我重构了你的代码,试试这个:

import json 

with open('sample.json', 'r') as data:
    json_data = json.loads(data.read())
    print json_data.get('ip_prefix')

# Output: "184.72.128.0/17"

答案 1 :(得分:0)

您可以将第二个open块重写为:

with open(destfile, 'r') as reads:
    data = json.load(reads)
    liste = [i['ip_prefix'] for i in data]

虽然,我认为你不需要写入中间文件,但你可以将两个块合并。

答案 2 :(得分:0)

好的,我已经浏览了你的JSON对象

import json, urllib2

url = 'https://ip-ranges.amazonaws.com/ip-ranges.json'
req = urllib2.Request(url)
res = urllib2.urlopen(req)
j = json.load(res)
print j['prefixes'][0]['ip_prefix']

prefixes = j['prefixes']
for i in prefixes:
    print i['ip_prefix']

结果:

>>> 
23.20.0.0/14
23.20.0.0/14
27.0.0.0/22
43.250.192.0/24
43.250.193.0/24
46.51.128.0/18
46.51.192.0/20
46.51.216.0/21
46.51.224.0/19
etc...

所以现在你想要所有的一个txt文件对吗? 所以你这样做:

import json, urllib2

url = 'https://ip-ranges.amazonaws.com/ip-ranges.json'
req = urllib2.Request(url)
res = urllib2.urlopen(req)
j = json.load(res)
#print j['prefixes'][0]['ip_prefix']

prefixes = j['prefixes']
destfile = 'destfile.txt'
with open('destfile.txt', 'w') as f:
    for i in prefixes:
        #print i['ip_prefix']
        f.write(i['ip_prefix'])
        f.write('\n')
        f.close

祝你好运, Rizzit