Hola Victor, <br><br>muchas gracias por tu respuesta. El script es casi valido, ya que caso de que haya más de un parentesis me tendria que quedar solo con el primer conjunto de 3 letras y no consigo plasmarlo en el codigo. Si pudieras sacarlo me seria clave para conseguirlo.<br>
<br>Aun así  tengo muchas dudas:<br>mi objetivo inicial era a partir de un shape de poligonos, en el que cada campo contiene estos codigos, crear otro campo nuevo con el resultado de las  3 primeras ocurrencias de letras en mayúsculas después de un 
paréntesis, y si no hay paréntesis, lo que sea que haya en la cadena. <br>He provado desde calcular expresion y añadir el script pero gvSIG no lo detecta, no se immuta...<br><br>entonces he visto que ejecutando el script, sí lo has conseguido y el resultado también seria válido, pero en la ejecución te lo ejecuto en toda un linia seguida y yo quisiera que me saliera el código del SIOSE, RESULTADO (salto de linia)<br>
siguiente codigo, resultado<br>siguiente codigo, resultado<br><br>otra cosa como lo has ejecutado, ¿mediante un compliador de Phyton? ¿Cual?<br><br>Saludos y gracias de antemano, <br><br>Pau<br><br>PD: Si a otros usuarios se os ocurre como hacerlo promonerlo!<br>
<br><br><br>
<br><br><br><br><div class="gmail_quote">2012/11/16 Victor Acevedo <span dir="ltr">&lt;<a href="mailto:vacevedo.gvsig.org@gmail.com" target="_blank">vacevedo.gvsig.org@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
El 16/11/12 12:25, pau maudos bonjoch escribió:<div><div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hola soy Pau<br>
<br>
Estoy trabajando con el código de SIOSE y quiero rellenar otro campo según<br>
una serie de parámetros que cito a posteriormente (un poco más abajo).<br>
Este codigo corresponde al SIOSE que catalogó los usos del suelo de España,<br>
pero la lió muchisima al querer poner demasiada información en un mismo<br>
poligono.<br>
<br>
El codigo es algo parecido a esto:<br>
<br>
I(90FDPpl_05FDC_05SNE)<br>
AAR(80EDFva_10CHLsc_10PRDsc)<br>
A(80MTR_10FDPpl_10SNE)<br>
FDPpl<br>
A(70FDC_30MTR)<br>
AAR(70EDFva_10PRDsc_10CHLsc_<u></u>10FDC)<br>
A(85FDPpl_10FDC_05SNE)<br>
FDC<br>
I(40PRDsc_40CHLsc_10FDC_<u></u>05EDFva_05VAP)<br>
A(60MTR_40FDPpl)<br>
I(35EDFvd_35UEN(45ZAU_35EDFvd_<u></u>20VAP)_15PAG(55SNE_35EDFnv_<u></u>05OCT_05VAP)_15PRDsc)<br>
I(50PST_25ECM(75OCT_15ZAU_<u></u>10VAP)_25SNE)<br>
A(85CNFpl_15MTR)<br>
I(50FDC_40PRDsc_10EDFva)<br>
A(60MTR_30PST_10SNE)<br>
UEN(40EDFvd_40ZAU_20VAP)<br>
NRV(85VAP_15ZAU)<br>
A(70MTR_30SNE)<br>
I(75PRDsc_25IAS(80EDFnv_20ZEV)<u></u>)<br>
A(55MTR_30FDC_15SNE)<br>
A(80CNFpl_20MTR)<br>
I(70FDCfr_30ACU)<br>
I(55PRDsc_35MTRpc_05FDPpl_<u></u>05SNE)<br>
A(65MTRpc_35FDC)<br>
AAR(60EDFva_20PRDsc_10CHLsc_<u></u>10FDC)<br>
A(60FDC_30MTR_10SNE)<br>
I(35PRDsc_30LOCsc_25IAS(<u></u>50EDFnv_25VAP_20SNE_05ZAU)_<u></u>10EDFva)<br>
I(40PRDsc_25EDFva_25IAS(<u></u>80EDFnv_20VAP)_10UEN(80EDFvd_<u></u>20SNE))<br>
EDU(35OCT_35SNE_15EDFea_15VAP)<br>
I(60AAR(90EDFva_05PRDsc_<u></u>05CHLsc)_40PRDsc)<br>
I(35PRDsc_20CHLsc_20FDC_<u></u>10EDFva_10EDFnv_05VAP)<br>
I(80PRDsc_10CHLsc_05FDC_05VAP)<br>
AAR(70EDFva_10FDC_10CHLsc_<u></u>10PRDsc)<br>
I(40MTR_40FDC_20EDFva)<br>
FDC<br>
I(25AAR(EDFva)_25CHLsc_<u></u>25PRDsc_15FDC_10EDFva)<br>
I(30PRDsc_30EDFva_20AAR(<u></u>90EDFva_05PRDsc_05CHLsc)_<u></u>10UEN(90EDFvd_05ZAU_05VAP)_<u></u>05FDC_05LOCsc)<br>
PAG(80ZEV_15EDFnv_05VAP)<br>
I(65PRDsc_20CHLsc_10VAP_05FDC)<br>
I(30PRDsc_30CHLsc_15EDFva_<u></u>10MTR_10PAG(80ZEV_20EDFnv)_<u></u>05VAP)<br>
A(75FDC_15PRDsc_10FDPpl)<br>
A(55MTR_40FDPpl_05SNE)<br>
A(70MTR_25CNFpl_05SNE)<br>
I(65PRDsc_25CHLsc_05FDC_<u></u>05EDFva)<br>
A(70CNFpl_15FDPpl_15MTR)<br>
I(60PRDsc_20CHLsc_10FDC_<u></u>05EDFnv_05VAP)<br>
I(65PRDsc_15FDC_10MTRct_05VAP_<u></u>05EDFva)<br>
I(55PRDsc_30FDC_10FDPpl_05VAP)<br>
PRDsc<br>
I(55EDFva_30PRDsc_15FDC)<br>
EDP(60ZAU_15SNE_10EDFea_10VAP_<u></u>05OCT)<br>
I(65PRDsc_30CHLsc_05SNE)<br>
PAG(70ZEV_15ZAU_10EDFnv_05VAP)<br>
AAR(65EDFva_30PRDsc_05CHLsc)<br>
I(90UEN(75EDFea_10SNE_10VAP_<u></u>05ZAU)_10UCS(90EDFva_10ZAU))<br>
...<br>
...<br>
...<br>
estos son los codigos que pertenecen a distintos poligonos...<br>
<br>
<br>
cada grupo de tres letras le corresponde un uso distinto.<br>
yo quisiera rellenar en otra columna la siguiente operación<br>
- haciendo una suma del % del uso predominante (se que este es muy<br>
complicado, debido a que el codigo es muy complejo...)<br>
- o bién, otro caso que se aproximaria al objetivo es que se muestren en<br>
otro campo las tres primeras letras MAYUSCULAS, dentro de cada parentesis<br>
si  contienen parentesis, sino las tres que hay en el poligono en cuestion.<br>
El problema es que antes del parentesis puedes encontrarte des de una letra<br>
o tres.<br>
<br>
Al final lo deje, el codigo pudo conmigo, si pudieras darle un par de<br>
vueltas al asunto me harias un gran favor.<br>
Sé que no es tarea fácil, pero seria de muy gran ayuda. Además, pareces que<br>
dominas el tema a la perfección.<br>
<br>
gracias de antemano<br>
<br>
<br>
<br>
Pau<br>
<br>
<br>
PD: perdon en el anterior no tenia asunto<br>
<br>
<br>
<br>
</blockquote>
<br>
<br></div></div>
Hola Pau,<br>
<br>
no he entendido tu primera intención, pero la aproximación<div class="im"><br>
<br>
&gt; - o bién, otro caso que se aproximaria al objetivo es que se muestren en otro campo las tres primeras letras MAYUSCULAS, dentro de cada parentesis si  contienen parentesis, sino las tres que hay en el poligono en cuestion. El problema es que antes del parentesis puedes encontrarte des de una letra o tres.<br>

<br></div>
no es tan complicada mediante un script. Si lo he entendido bien. Necesitas las 3 primeras ocurrencias de letras en mayúsculas después de un paréntesis, y si no hay paréntesis, lo que sea que haya en la cadena.<br>
<br>
Lo que he hecho es copiar los datos que adjuntas en el correo en un archivo que he dejado en &#39;/tmp/codigos.txt&#39; y montar el siguiente script. Está hecho deprisa y corriendo pero te dará una idea de lo que pudes hacer.<br>

<br>
{{{<br>
<br>
import re<br>
<br>
def main():<br>
<br>
  f = file(&quot;/tmp/codigos.txt&quot;, &quot;r&quot;)<br>
<br>
  #recorre las lineas del archivo<br>
  for index, line in enumerate(f.readlines()):<br>
    print &quot;%s, %s&quot;%(index,line)<br>
<br>
    #Si no encuentra un &quot;(&quot; devuelve el codigo<br>
    if line.find(&quot;(&quot;) ==-1:<br>
      print line<br>
      continue<br>
    patron = re.compile(&quot;[A-Z]{3}&quot;)<br>
    index = 0<br>
<br>
    #busca dentro de la linea todos los &quot;(&quot;<br>
    while (line.find(&quot;(&quot;, index, len(line)) !=-1):<br>
        index = line.find(&quot;(&quot;, index, len(line)) +1<br>
        dd = line[index:]<br>
<br>
        #busca las 3 primeras mayusculas en la cadena<br>
        r=patron.search(dd)<br>
<br>
        #si se ha encontrado algo imprime el resultado<br>
        if r:<br>
            print r.string[r.start():r.end()]<br>
<br>
  file.close()<br>
<br>
}}}<br>
<br>
El resultado que obtengo de tus datos (10 líneas) es:<br>
<br>
0, I(90FDPpl_05FDC_05SNE)<br>
FDP<br>
<br>
1, AAR(80EDFva_10CHLsc_10PRDsc)<br>
EDF<br>
<br>
2, A(80MTR_10FDPpl_10SNE)<br>
MTR<br>
<br>
3, FDPpl<br>
FDPpl<br>
<br>
4, A(70FDC_30MTR)<br>
FDC<br>
<br>
5, AAR(70EDFva_10PRDsc_10CHLsc_<u></u>10FDC)<br>
EDF<br>
<br>
6, A(85FDPpl_10FDC_05SNE)<br>
FDP<br>
<br>
7, FDC<br>
FDC<br>
<br>
8, I(40PRDsc_40CHLsc_10FDC_<u></u>05EDFva_05VAP)<br>
PRD<br>
<br>
9, A(60MTR_40FDPpl)<br>
MTR<br>
<br>
10, I(35EDFvd_35UEN(45ZAU_35EDFvd_<u></u>20VAP)_15PAG(55SNE_35EDFnv_<u></u>05OCT_05VAP)_15PRDsc)<br>
EDF<br>
ZAU<br>
SNE<br>
<br>
Si resulta que tienes la capa cargada en gvSIG 2.0 puedes crearte una capa nueva con los resultados. Si estas interesado,dímelo y te mando una aproximación.<br>
<br>
Te adjunto 3 archivos.<br>
- los codigos de tu correo en un txt (codigos.txt)<br>
- los resultados de ejecutar el script usando el archivo anterior<br>
- el código<br>
<br>
Saludos,<br>
Victor Acevedo<br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
______________________________<u></u>_________________<br>
gvSIG_usuarios mailing list<br>
<a href="mailto:gvSIG_usuarios@listserv.gva.es" target="_blank">gvSIG_usuarios@listserv.gva.es</a><br>
<br>
Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección:<br>
<br>
<a href="http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios" target="_blank">http://listserv.gva.es/cgi-<u></u>bin/mailman/listinfo/gvsig_<u></u>usuarios</a><br>
<br>
</blockquote>
<br>
<br>_______________________________________________<br>
gvSIG_usuarios mailing list<br>
<a href="mailto:gvSIG_usuarios@listserv.gva.es">gvSIG_usuarios@listserv.gva.es</a><br>
<br>
Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección:<br>
<br>
<a href="http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios" target="_blank">http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios</a><br></blockquote></div>