Python - Escribir en archivo json

 
Vista:
sin imagen de perfil
Val: 31
Ha disminuido su posición en 4 puestos en Python (en relación al último mes)
Gráfica de Python

Escribir en archivo json

Publicado por Josafat (18 intervenciones) el 19/11/2018 17:25:56
Hola, quiero crear un archivo json con la siguiente estructura en base a un indice que tengo de url y palabras para que quede de la siguiente manera:
{"Indice":
[
{"p1":
[
{"url":"http:","freq":10},
{"url":"http:","freq":20},
{"url":"http:","freq":30}
]
},
{"p2":
[
{"url":"http:","freq":10},
{"url":"http:","freq":20},
{"url":"http:","freq":30}
]
}
]
}:


Y agregar en la lista de la palabra pX la nueva url y su frecuencia, y si hay mas palabras que se agrege una lista nueva así:
{"Indice":
[
{"p1":
[
{"url":"http:","freq":10},
{"url":"http:","freq":20},
{"url":"http:","freq":30}
]
},
{"p2":
[
{"url":"http:","freq":10},
{"url":"http:","freq":20},
{"url":"http:","freq":30}
]
},
{"pX":
[
{"url":"http:","freq":10},
{"url":"http:","freq":20},
{"url":"http:","freq":30}
]
}
]
Este es el código que esgtoy trabajando para leer las palabras y url de mi indice
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import io
import string, re
file=open("indicenormal.txt")
palabrasg=[]
 
def indiceinv(palabrasg):
	ind=0
	file2=open("indiceinvertido.txt",'w')
	for palabra in palabrasg:
		str1 = ''.join(palabra)
		if ind==0:
			file2.write(str1+"\n[\n]")
			ind+=1
		else:
			file2.write("\n"+str1+"\n[\n]")
 
a=0
b=0
c=0
urls={}
inicio=0
termino=0
i=0
coma=0
palabra=''
frecuencia=''
for line in file:
	if line[0]=='u':
		urls[line]=line
		print(line)
	else:
		for s in line:
			if s=='(':
				inicio=i
				a=1
			if s==',':
				coma=i
				b=1
			if s==')':
				termino=i
				c=1
			if a==1 and b==1 and c==1:
				palabra=line[inicio:coma].strip('(,)')
				frecuencia=line[coma:termino].strip('(,)')
				if palabra not in palabrasg:
					palabrasg.append(palabra)
				#print(line,inicio,coma,termino)
				print(palabra,frecuencia)
 
				palabra=''
				frecuencia=''
				a=0
				b=0
				c=0
 
			i+=1
		i=0
 
print (urls)
print (palabrasg)
indiceinv(palabrasg)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.464
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Escribir en archivo json

Publicado por tincopasan (438 intervenciones) el 20/11/2018 04:16:47
no voy a escribir código, te daré una opinión:
python en modo consola no es mágico, no funciona como un editor de texto, me refiero a no poder escribir sobre el mismo archivo de forma facil, por lo tanto una posible solución sería leer cada línea del archivo e irlas guardando en una variable, cuando llegues a la línea que te interese modificas esa línea y la agregas a la variable, una vez hecho esto podés escribir un archivo nuevo con los valores correctos.despuéspodés elegir borrar el archivo viejo y al nuevo ponerle el nombre del anterior.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar