[Programación]Alguna forma fácil de convertir formatos...
Fabian Ezequiel Gallina
galli.87 en gmail.com
Vie Feb 12 11:38:12 ART 2010
El día 12 de febrero de 2010 11:14, Horacio Castellini
<horacio9573 en yahoo.com.ar> escribió:
>> > El Vis Server de una mesh me
>> manda la tabla de dígrafos en el formato:
>> >
>> > digraph topology
>> > {
>> > "IP_origen" ->
>> "IP_destino"[label=potencia_en_unidades_vis]
>> > }
>> >
>> > Por ejemplo:
>> >
>> > digraph topology
>> > {
>> > "5.219.82.43" -> "5.174.117.226"[label="1.03"]
>> > "5.219.82.43" -> "5.170.250.244"[label="1.00"]
>> > }
>> >
>> > Existe alguna manera en Python, PERL, para llevarlo a
>> un formato de tres
>> > columnas en ASCII y sin los caracteres raros?
>>
>> no podes reemplazar los caracteres " -> " , "[label="
>> etc por |
>> --
>
> Si puedo hacer un script en bash con "sed", y que me boore todo eso, pero la idea no es esa... la forma peculiar que lo manda me da la idea que es algo estandar y que deben existir bibliotecas que lo porcesen...
>
Podés basar tu código en el parser que armé para el mapa de los
hotspots del wifidog[0].
[0] http://my-trac.assembla.com/lugro-mesh/browser/trunk/wifidog/wifidog-auth/classes/Nightwing/NightwingVISParser.php#L118
En python sería así (excerpt de bludhaven):
def parse(contents):
"""Parses the retrieved VIS dump"""
# blank at the beginning of line
pattern = r'.*'
# router ip address
pattern += r'"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}){1}'
# garbage
pattern += r'[^\"]*"\s*->\s*'
# neighbour ip address
pattern += r'"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}){1}'
# garbage
pattern += r'[^\"]*"\s*'
# label
pattern += r'\[label="([^"]+)"\]\s*'
# end
pattern += r';?\s*\n'
pattern = re.compile(pattern)
matches = re.findall(pattern, contents)
parsed = []
for match in matches:
parsed.append(
{
'router': match[0], 'router_id': Parser.ip_2_id(match[0]),
'neighbour': match[1], 'neighbour_id':
Parser.ip_2_id(match[1]),
'label': match[2]
}
)
return parsed
Saludos,
--
Fabián E. Gallina
http://www.from-the-cloud.com
Más información sobre la lista de distribución Programacion