<div dir="ltr"><div>Bom dia,</div><div><br></div><div>Percebi que não posso fazer desta maneira por isso o que me sugeriu não vai funcionar.</div><div><br></div><div>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 <font color="#ff0000">3</font>:</div><div><br></div><div>import re<br># Substituir o nº "_3" pelos nºs "_1"," _2", "_3"... até "_31" inclusive.<br></div><div>for number in xrange(1,31+1):<br> str1=re.sub(r'(_3)',"_%s" % number,"D:\PATRICIA\DOCUMENTOS\ESTACOES METEOROLOGICAS\DADOS METEOROLOGICOS\HR\H_1999_1_<font color="#ff0000">3</font>.xlsx")<br> str2=re.sub(r'(_3)',"_%s" % number,"D:\PATRICIA\IG\QGIS\FWI\HR\ESTACOES_HR_1999_1_<font color="#ff0000">3</font>")<br> str3=re.sub(r'(_3)',"_%s" % number,"D:\PATRICIA\IG\QGIS\FWI\HR\ESTACOES_HR_1999_1_<font color="#ff0000">3</font>.shp")<br> str4=re.sub(r'(_3)',"_%s" % number,"D:\PATRICIA\IG\QGIS\FWI\HR\ESTACOES_HR_1999_1_<font color="#ff0000">3</font>_SF_Int.shp")<br> str5=re.sub(r'(_3)',"_%s" % number,"D:\PATRICIA\IG\QGIS\FWI\HR\ESTACOES_HR_1999_1_<font color="#ff0000">3</font>_SF.shp")<br> str6=re.sub(r'(_3)',"_%s" % number,"D:\PATRICIA\IG\QGIS\FWI\HR\Python_HR_Viz8_Cell100_<font color="#ff0000"></font><font color="#ff0000">3</font>")<br> <br> #Join atribute table : "DIST_COSTA_etrs89.shp" com "H_1999_1_3.xlsx"<br> processing.runalg("qgis:joinattributestable", "D:\PATRICIA\IG\QGIS\DIST_COSTA_etrs89.shp", str1, "EST", "num", str2)<br> # Selecte by atribute: Seleciona o campo H != de NULL e -99999<br> processing.runalg("qgis:selectbyattribute", str3, "H", 1, "NULL", str3)<br> # Save selected features: cria nova shape sem NULL.<br> processing.runalg("qgis:saveselectedfeatures", str3, str4)<br> #Selecionar desta vez no campo "H" os valores diferentes de -999.9<br> processing.runalg("qgis:selectbyattribute", str4, "H", 1, "-999.9", str4)<br> # Save selected features: cria nova shape sem falhas final<br> processing.runalg("qgis:saveselectedfeatures", str4, str5)<br> # Aplicar a função inverse distance weighed com 8 vizinhos e Cellsize 100<br> processing.runalg("saga:inversedistanceweighted", str5, "H", 0, 2, 0, 1, 100, 0, 0, 8, "-152444.0, 180000.0, -302911.0, 280000.0", 100, str6) </div><div><br></div><div>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:</div><div><br></div><div>Vermelho=1999 a 2014</div><div>Azul=1 a 12</div><div>Verde=1 a 31</div><div><br></div><div>ex:<br></div><div>H_<font color="#ff0000">1999</font>_<font color="#0000ff">1</font>_<font color="#00ff00">1</font>.xlsx</div><div>H_<font color="#ff0000" style="background-color:rgb(255,255,255)">1999</font>_<font color="#0000ff">1</font>_<font color="#00ff00">2</font>.xlsx</div><div>...</div><div>H_<font color="#ff0000">1999</font>_<font color="#0000ff">1</font>_<font color="#00ff00">31</font>.xlsx</div><div>H_<font color="#ff0000">1999</font>_<font color="#0000ff">2</font>_<font color="#00ff00">1</font>.xlsx</div><div>...</div><div>H_<font color="#ff0000">1999</font>_<font color="#0000ff">2</font>_<font color="#00ff00">31</font>.xlsx</div><div>...</div><div>...</div><div>H_<font color="#ff0000">1999</font>_<font color="#0000ff">12</font>_<font color="#00ff00">31</font>.xlsx</div><div>H_<font color="#ff0000">2000</font>_<font color="#0000ff">1</font>_<font color="#00ff00">1</font>.xlsx</div><div>...</div><div>...</div><div>H_<font color="#ff0000">2000</font>_<font color="#0000ff">12</font>_<font color="#00ff00">31</font>.xlsx</div><div>...</div><div>...</div><div>...</div><div>H_<font color="#ff0000">2014</font>_<font color="#0000ff">12</font>_<font color="#00ff00">31</font>.xlsx</div><div><br></div><div>Como devo fazer?</div><div>Alguém tem ideia?</div><div><br></div><div>Obrigada, </div><div><br></div><div>Patrícia.<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-05-13 22:20 GMT+01:00 Mendes de Jesus, Jorge <span dir="ltr"><<a href="mailto:jorge.mendesdejesus@wur.nl" target="_blank">jorge.mendesdejesus@wur.nl</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Boa noite<br>
<br>
<br>
Basta recorrer ao itertools<br>
<br>
<br>
0) import itertools<br>
<br>
<br>
1) Fazendo o X,Y,Z como iterators<br>
<br>
<br>
iterX=xrange(1999,2014+1)<br>
iterY=xrange(1,12+1)<br>
iterZ=xrange(1,31+1)<br>
<br>
<br>
<br>
2) Depois fazendo o producto entre dois iterators obtem a combinacao desejada e.g<br>
<br>
for item in itertools.product(iterY,iterZ):<br>
print item<br>
<br>
isto vai dar (1,1).....(12,31)<br>
<br>
3) O iterator do ponto 2 usado em conjunto com o iterator X vai dar um objecto tipo (1999,(1,1))<br>
?<br>
for item in itertools.product(iterX,iterYZ):<br>
#item[0] --> X<br>
#item[1][0] --> Y<br>
#item[1][1] -- >Z<br>
print "D:\PATRICIA\DOCUMENTOS\ESTACOES METEOROLOGICAS\DADOS METEOROLOGICOS\HR\H_%s_%s_%s.xlsx" %(item[0],item[1][0],item[1][1])<br>
<br>
<br>
4) Agora tudo ao molho e fe em deus !!!!<br>
<br>
import itertools<br>
iterX=xrange(1999,2014+1)<br>
iterY=xrange(1,12+1)<br>
iterZ=xrange(1,31+1)<br>
<br>
iterYZ=itertools.product(xrange(1,12+1),xrange(1,31+1))<br>
for item in itertools.product(iterX,iterYZ):<br>
<br>
#item[0] --> X<br>
#item[1][0] --> Y<br>
#item[1][1] -- >Z<br>
str1="D:\PATRICIA\DOCUMENTOS\ESTACOES METEOROLOGICAS\DADOS METEOROLOGICOS\HR\H_%s_%s_%s.xlsx" %(item[0],item[1][0],item[1][1])<br>
str2="D:\PATRICIA\IG\QGIS\FWI\HR\ESTACOES_HR_%s_%s_%s"<br>
#itertools.product<br>
processing.runalg("qgis:joinattributestable", "D:\PATRICIA\IG\QGIS\DIST_COSTA_etrs89.shp", str1, "EST", "num", str2)<br>
<br>
<br>
Nao gosto muito do item[0], item[1][0], item[1][1], alem tem outro sugestao ???<br>
<br>
Jorge de Jesus<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
________________________________<br>
From: <a href="mailto:portugal-bounces@lists.osgeo.org">portugal-bounces@lists.osgeo.org</a> <<a href="mailto:portugal-bounces@lists.osgeo.org">portugal-bounces@lists.osgeo.org</a>> on behalf of Patrícia Pécurto <<a href="mailto:patricia.pecurto@gmail.com">patricia.pecurto@gmail.com</a>><br>
Sent: 13 May 2015 22:30<br>
To: OSGeo PT - The OSGeo Portugal Local Chapter<br>
Subject: [Portugal] Substituição de strings em simultâneo<br>
<div><div class="h5"><br>
Boa tarde,<br>
<br>
Estou a escrever um código que tem de correr para um número elevado de intervalos de números em simultâneo.<br>
O código é o seguinte:<br>
<br>
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")<br>
<br>
Sabendo que as letras X, Y e Z têm que variar entre os seguintes intervalos de números:<br>
<br>
X= 1999, 2000, ..., 2014<br>
Y= 1,2, ..., 12<br>
Z= 1, 2, ..., 31<br>
<br>
Como posso substituir as letras (X, Y e Z) deste código simultaneamente obtendo as seguintes combinações de sequências:<br>
<br>
(X Y Z)<br>
1999 1 1<br>
1999 1 2<br>
...<br>
1999 1 31<br>
1999 2 1<br>
1999 2 2<br>
...<br>
1999 2 31<br>
1999 3 1<br>
1999 3 2<br>
...<br>
...<br>
...<br>
1999 12 31<br>
...<br>
...<br>
2000 1 1<br>
...<br>
...<br>
2000 12 31<br>
...<br>
...<br>
...<br>
2014 12 31<br>
<br>
Alguém me pode ajudar?<br>
<br>
Obrigada,<br>
<br>
Patrícia.<br>
</div></div>_______________________________________________<br>
Portugal mailing list<br>
<a href="mailto:Portugal@lists.osgeo.org">Portugal@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/portugal" target="_blank">http://lists.osgeo.org/mailman/listinfo/portugal</a><br>
</blockquote></div><br></div>