[Portugal] Substituição de strings em simultâneo
Patrícia Pécurto
patricia.pecurto gmail.com
Quinta-Feira, 14 de Maio de 2015 - 03:45:39 PDT
Bom dia,
Percebi que não posso fazer desta maneira por isso o que me sugeriu não vai
funcionar.
Neste momento tenho este código montado com algumas das suas sugestões
anteriores que corre para a sequência de 1 a 31 substituindo o valor 3:
import re
# Substituir o nº "_3" pelos nºs "_1"," _2", "_3"... até "_31" inclusive.
for number in xrange(1,31+1):
str1=re.sub(r'(_3)',"_%s" % number,"D:\PATRICIA\DOCUMENTOS\ESTACOES
METEOROLOGICAS\DADOS METEOROLOGICOS\HR\H_1999_1_3.xlsx")
str2=re.sub(r'(_3)',"_%s" %
number,"D:\PATRICIA\IG\QGIS\FWI\HR\ESTACOES_HR_1999_1_3")
str3=re.sub(r'(_3)',"_%s" %
number,"D:\PATRICIA\IG\QGIS\FWI\HR\ESTACOES_HR_1999_1_3.shp")
str4=re.sub(r'(_3)',"_%s" %
number,"D:\PATRICIA\IG\QGIS\FWI\HR\ESTACOES_HR_1999_1_3_SF_Int.shp")
str5=re.sub(r'(_3)',"_%s" %
number,"D:\PATRICIA\IG\QGIS\FWI\HR\ESTACOES_HR_1999_1_3_SF.shp")
str6=re.sub(r'(_3)',"_%s" %
number,"D:\PATRICIA\IG\QGIS\FWI\HR\Python_HR_Viz8_Cell100_3")
#Join atribute table : "DIST_COSTA_etrs89.shp" com "H_1999_1_3.xlsx"
processing.runalg("qgis:joinattributestable",
"D:\PATRICIA\IG\QGIS\DIST_COSTA_etrs89.shp", str1, "EST", "num", str2)
# Selecte by atribute: Seleciona o campo H != de NULL e -99999
processing.runalg("qgis:selectbyattribute", str3, "H", 1, "NULL", str3)
# Save selected features: cria nova shape sem NULL.
processing.runalg("qgis:saveselectedfeatures", str3, str4)
#Selecionar desta vez no campo "H" os valores diferentes de -999.9
processing.runalg("qgis:selectbyattribute", str4, "H", 1, "-999.9",
str4)
# Save selected features: cria nova shape sem falhas final
processing.runalg("qgis:saveselectedfeatures", str4, str5)
# Aplicar a função inverse distance weighed com 8 vizinhos e Cellsize
100
processing.runalg("saga:inversedistanceweighted", str5, "H", 0, 2, 0,
1, 100, 0, 0, 8, "-152444.0, 180000.0, -302911.0, 280000.0", 100, str6)
Acontece que eu quero que o código inicie a correr num ficheiro em .xlsx já
criado (H_1999_1_1.xlsx) e que corra utilizando os ficheiros seguintes tb
já criados numa ordem sequencial como expliquei no e-mail anterior, em que
variam os números a:
Vermelho=1999 a 2014
Azul=1 a 12
Verde=1 a 31
ex:
H_1999_1_1.xlsx
H_1999_1_2.xlsx
...
H_1999_1_31.xlsx
H_1999_2_1.xlsx
...
H_1999_2_31.xlsx
...
...
H_1999_12_31.xlsx
H_2000_1_1.xlsx
...
...
H_2000_12_31.xlsx
...
...
...
H_2014_12_31.xlsx
Como devo fazer?
Alguém tem ideia?
Obrigada,
Patrícia.
2015-05-13 22:20 GMT+01:00 Mendes de Jesus, Jorge <
jorge.mendesdejesus wur.nl>:
> 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.
> _______________________________________________
> Portugal mailing list
> Portugal lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/portugal
>
-------------- próxima parte ----------
Um anexo em HTML foi limpo...
URL: <http://lists.osgeo.org/pipermail/portugal/attachments/20150514/45722096/attachment.html>
Mais informações acerca da lista Portugal