[Portugal] Substituição de strings em simultâneo

Mendes de Jesus, Jorge jorge.mendesdejesus wur.nl
Quarta-Feira, 13 de Maio de 2015 - 14:20:39 PDT


Boa noite


Basta recorrer ao itertools


0) import itertools


1) Fazendo  o X,Y,Z como iterators


iterX=xrange(1999,2014+1)
iterY=xrange(1,12+1)
iterZ=xrange(1,31+1)



2) Depois fazendo o producto entre dois iterators obtem a combinacao desejada e.g

for item in itertools.product(iterY,iterZ):
    print item

isto vai dar (1,1).....(12,31)

3) O iterator do ponto 2 usado em conjunto com o  iterator X vai dar um objecto tipo (1999,(1,1))
?
for item in  itertools.product(iterX,iterYZ):
    #item[0] --> X
    #item[1][0] --> Y
    #item[1][1] -- >Z
    print "D:\PATRICIA\DOCUMENTOS\ESTACOES METEOROLOGICAS\DADOS METEOROLOGICOS\HR\H_%s_%s_%s.xlsx" %(item[0],item[1][0],item[1][1])


4) Agora tudo ao molho e fe em deus !!!!

import itertools
iterX=xrange(1999,2014+1)
iterY=xrange(1,12+1)
iterZ=xrange(1,31+1)

iterYZ=itertools.product(xrange(1,12+1),xrange(1,31+1))
for item in  itertools.product(iterX,iterYZ):

    #item[0] --> X
    #item[1][0] --> Y
    #item[1][1] -- >Z
    str1="D:\PATRICIA\DOCUMENTOS\ESTACOES METEOROLOGICAS\DADOS METEOROLOGICOS\HR\H_%s_%s_%s.xlsx" %(item[0],item[1][0],item[1][1])
    str2="D:\PATRICIA\IG\QGIS\FWI\HR\ESTACOES_HR_%s_%s_%s"
#itertools.product
    processing.runalg("qgis:joinattributestable", "D:\PATRICIA\IG\QGIS\DIST_COSTA_etrs89.shp", str1, "EST", "num", str2)


Nao gosto muito do item[0], item[1][0], item[1][1], alem tem outro sugestao ???

Jorge de Jesus









________________________________
From: portugal-bounces  lists.osgeo.org <portugal-bounces  lists.osgeo.org> on behalf of Patrícia Pécurto <patricia.pecurto  gmail.com>
Sent: 13 May 2015 22:30
To: OSGeo PT - The OSGeo Portugal Local Chapter
Subject: [Portugal] Substituição de strings em simultâneo

Boa tarde,

Estou a escrever um código que tem de correr para um número elevado de intervalos de números em simultâneo.
O código é o seguinte:

processing.runalg("qgis:joinattributestable", "D:\PATRICIA\IG\QGIS\DIST_COSTA_etrs89.shp", "D:\PATRICIA\DOCUMENTOS\ESTACOES METEOROLOGICAS\DADOS METEOROLOGICOS\HR\H_X_Y_Z.xlsx", "EST", "num", "D:\PATRICIA\IG\QGIS\FWI\HR\ESTACOES_HR_X_Y_Z")

Sabendo que as letras X, Y e Z têm que variar entre os seguintes intervalos de números:

X= 1999, 2000, ..., 2014
Y= 1,2, ..., 12
Z= 1, 2, ..., 31

Como posso substituir as letras (X, Y e Z) deste código simultaneamente obtendo as  seguintes combinações de sequências:

(X        Y  Z)
1999  1   1
1999  1   2
...
1999  1   31
1999  2   1
1999  2   2
...
1999  2   31
1999  3   1
1999  3   2
...
...
...
1999  12  31
...
...
2000  1    1
...
...
2000  12   31
...
...
...
2014  12  31

Alguém me pode ajudar?

Obrigada,

Patrícia.


Mais informações acerca da lista Portugal