Eléments de Python

Voici quelques éléments de Python qui peuvent vous servir pour la suite.

Lire un fichier contenant du texte ascii et le transformer en un automate (analogue au script convert.pl). Il utiliser les fonctions str qui convertit un nombre en string et ord qui donne le code ascii d'un caractère.

import pywrapfst as fst
file = open('chefdoeuvre.txt','r')

strpage = file.read()
compiler = fst.Compiler()
file.close()

voc = dict()

stn = 0
for st in strpage:
    chn = ord(st)
    voc[chn]=st
    lig = str(stn) + "\t" + str(stn+1) + "\t"+str(chn)+"\t"+str(chn)
    print >> compiler, lig
    stn = stn + 1
print >> compiler,stn
textechef = compiler.compile()

Le fichier chefdoeuvre.txt est téléchargeable.

Exécuter une commande unix depuis un script Python:

import pywrapfst as fst
from subprocess import call

tab = fst.SymbolTable.read_text('titalph.sym')

compiler = fst.Compiler(acceptor=True,isymbols=tab)

print >> compiler, "0 1 a"
print >> compiler, "1 2 b"
print >> compiler, "2 3 c"
print >> compiler, "3"

auto2 = compiler.compile()
auto2.draw('auto2.dot',acceptor=True,portrait=True,isymbols=tab)
call('dot -Tpng auto2.dot > auto2.png',shell=True)
call('display auto2.png &',shell=True)

Créer une fonction qui prend un automate en paramètre.

import pywrapfst as fst
from subprocess import call

compiler = fst.Compiler(acceptor=True)
print >> compiler, "0 1 1"
print >> compiler, "1 2 2"
print >> compiler, "2 3 3"
print >> compiler, "3"

auto1 = compiler.compile()

def draw_auto(aut,name='auto',isym=None):
    acc = aut.properties(fst.ACCEPTOR,True)==fst.ACCEPTOR
    print("acc=",acc)
    aut.draw(name + ".dot",portrait=True,isymbols=isym,acceptor=acc)
    call('dot -Tpng '+name +".dot > " + name + ".png",shell=True)
    call('display ' + name + ".png &",shell=True)
    
draw_auto(auto1,'auto1')



barthe 2018-01-31