Ir para conteúdo
Fórum Script Brasil
  • 0

Contatenação de códigos em python


Thomas.py

Pergunta

Pessoal,to com um probleminha aqui

Estou querendo concatenar uma serie de códigos em arquivo .metar para que fiquem na mesma linha todos os codigos que são enviados de suas repectivas cidades,ou seja, pega as linhas de código quebradas e "rejuntá-las".

Até ai não parecia foda,mas ai eu vi que os espaços que quebram-se as linhas são diferentes....

dêem uma olhada e me ajudem se puder plx >.<

930 
SAUS80 KWBC 212300
METAR
KMWS 212249Z 00000KT 25/08=


791 
SAUS70 KWBC 212300
METAR
KBQP 212245Z AUTO 21005KT 10SM CLR A2993 RMK AO2 LTG DSNT N=
KCWV 212245Z AUTO 05010G16KT 10SM SCT014 SCT020 BKN050 26/22 A2996
     RMK AO2=
KRUQ 212247Z AUTO 08007KT 10SM SCT060 SCT070 29/18 A3015 RMK
     AO2=
KUNI 212248Z AUTO 14005KT 10SM CLR 31/12 A3009 RMK AO2=


089 
SAXX60 KWBC 212300
METAR
KNSI 212256Z 09004KT 7SM FEW010 24/16 A2980 RMK SLP090
     T02390161=


098 
SAUS70 KWBC 212300
METAR
KLDJ 212245Z AUTO 15006KT 7SM CLR 26/14 A3024 RMK AO2
     T02560139=
KUKF 212245Z AUTO 07003KT 10SM CLR 27/17 A3019 RMK AO1=


480 
SAUS70 KWBC 212300
METAR
PALP 212245Z 34005KT 10SM BKN008 06/03 A2993=
PHJH 212245Z 07018KT 15SM FEW030 SCT050 30/19 A3006=


647 
SAUS80 KWBC 212300
METAR
KCQT 212247Z AUTO VRB04KT 10SM CLR 26/16 A2978 RMK AO2 SLP083
     T02560161 TSNO=
KJDN 212248Z AUTO 32012KT 23/11 A2960 RMK AO2 SLP014 T02330106
     PWINO TSNO=


656 
SAUS70 KWBC 212300
METAR
KCGF 212245Z 13006KT 6SM HZ SCT100 BKN180 29/20 A3014=
PAKU 212247Z 36004 10SM BKN008 BKN030 06/04 A2992=


947 
SAMH31 PKWA 212300
METAR PKWA 212250Z 09004KT 10SM FEW020 FEW140 SCT300 29/26 A2990 RMK 
 SLP124 T02880260=


098 
SAUS80 KWBC 212300
METAR
KMYL 212250Z AUTO 26019G24KT 10SM SCT070 BKN085 18/04 A2990 RMK
     AO2 SLP092 T01780039 $=
KLAX 212250Z 26009KT 10SM CLR 22/16 A2980 RMK AO2 SLP090 T02220161
     $=
KSAD 212250Z AUTO 33008G20KT 10SM CLR 38/04 A2983 RMK AO2 SLP043
     T03780039 TSNO=
KEHA 212248Z AUTO 17012KT 31/16 RMK AO1 PK WND 18 000
     T03060162=

E mais uma coisa,ouvi falar de um módulo pickle que pode transformar códigos em strings...é verdade?

Editado por Thomas.py
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

A situação é a seguinte

-Arquivos .METAR são arquivos de meteorologia.

-Cada informação de uma cidade é identificada por um códiogo de quatro caracteres

KMWS 212249Z 00000KT 25/08=
E algumas vezes a informação vem quebrada.
KCWV 212245Z AUTO 05010G16KT 10SM SCT014 SCT020 BKN050 26/22 A2996
     RMK AO2=

Eu quero juntá-las dinovo

PS:coloquei underline porque o post não da pra fixar o espaçamento.

Editado por Thomas.py
Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Não é muito compacto mas veja se resolve

#!/usr/bin/python

arquivo = open('dados.metar','r')
linhas = arquivo.readlines()
arquivo.close()

linhas = [ elemento.strip() for elemento in linhas ]
linhas = [ elemento.strip('\t') for elemento in linhas]

string_vazia = ""
lista_strings = []
indice = 0
while indice < len(linhas):
    if linhas[indice] != '':
        if linhas[indice] != "METAR":
            string_vazia = string_vazia + linhas[indice] + '\n'
            indice+=1
        else:
            string_vazia = string_vazia + linhas[indice] + '\n'
            indice+=1
            while indice < len(linhas) and linhas[indice] != '':
                string_vazia = string_vazia + linhas[indice]
                indice +=1
            string_vazia = string_vazia + '\n'
            lista_strings.append(string_vazia[:])
            string_vazia=""
    else:
        indice+=1

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

O código cria uma lista com cada informação separada, mas ele junta os pedacos,sim.

Se você quer uma string gigante, tire os \t ,\n e ' ' e concatene tudo numa unica string depois de criar a lista.

Link para o comentário
Compartilhar em outros sites

  • 0

Olha. EU precido se ajuda em um algoritmo para poder concatenar todas as linhas quebradas...

como da pra ver, as linhas de código começam com um código de 4 digitos(letras e numeros) e depois egue as infromações sobre o local(que é especificado com o código de 4 digitos inicial)

eu preciso contatenar e ordenar em ordem "alfabética",de modo que a linha de código inicial(o código da cidade) seja a unica coisa a ser considerada na hora de ordenar as linhas em ordem alfabetica ._.

Malz...é que a coisa é séria aqui,e estou ficando sem tempo >.<

OBS: O código que estou usando atualmente é esse:

import re
f=open('2008082123.metar','r')
strFind='METAR'


anterior=''
separa=''
atual=""

for line in f.readlines():
    teste = re.compile("^     ");
    print anterior
    anterior=atual
    if (teste.match(line)):
        separa = line[:-1].lstrip()
        anterior=anterior+" "+separa
    else:
        atual=line[:-1]
        
print atual
f.close()

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...