Olá, boa tarde.
Gostaria de saber como posso para separar dados de uma linha especifica
Exemplo:
Tenho essa linha com varios campos divididos por PIPES.
Como posso isolar esses campos?
Deixando claro que os dados mudarão a todo momento, menos a estrutura.
|0110|C230412153|CLAUDIA MENDONÇA S|1058|0|66205041472|1|2507507|0|AVENIDA CABO BRANCO|1|2|CABO BRANCO|
Queria isolar os dados para pegar o nome CLAUDIA MENDONÇA S e o Avenida Cabo Branco.
Ler dados separados em txt Topic is solved
Moderator: Gio
-
- Posts: 95
- Joined: 13 Sep 2021, 06:08
Re: Ler dados separados em txt
Olá. Assumindo que os campos requeridos estão sempre na mesma posição:
Code: Select all
str := " |0110|C230412153|CLAUDIA MENDONÇA S|1058|0|66205041472|1|2507507|0|AVENIDA CABO BRANCO|1|2|CABO BRANCO|"
arr := StrSplit(str, "|")
MsgBox, % arr[4] "`n" Format("{:T}`n", arr[11])
Re: Ler dados separados em txt
obrigado sofista
loop example
loop example
Code: Select all
dlm:="|"
var= ;- for test
(ltrim join`r`n
|0110|C230412153|1-CLAUDIA MENDONÇA S|1058|0|66205041472|1|2507507|0|1-AVENIDA CABO BRANCO|1|2|CABO BRANCO|
|0110|C230412153|2-CLAUDIA MENDONÇA S|1058|0|66205041472|1|2507507|0|2-AVENIDA CABO BRANCO|1|2|CABO BRANCO|
|0110|C230412153|3-CLAUDIA MENDONÇA S|1058|0|66205041472|1|2507507|0|3-AVENIDA CABO BRANCO|1|2|CABO BRANCO|
)
Loop,parse,var,`n,`r
{
LR=%A_loopfield%
h:=StrSplit(lr,dlm)
nome:=h[4],rua:=h[11]
e .= nome . "---" . rua . "`r`n"
}
msgbox,%e%
;fileappend,%e%,test55.txt,utf-8
exitapp
Re: Ler dados separados em txt Topic is solved
Eu costumo fazer assim para organizar arquivos desse tipo:
Supondo que um arquivo contenha 1 registro por linha, e que cada registro seja composto de 13 campos separados por pipes, temos:
Supondo que um arquivo contenha 1 registro por linha, e que cada registro seja composto de 13 campos separados por pipes, temos:
Code: Select all
Text =
(
|0110|C230412153|1-CLAUDIA MENDONÇA S|1058|0|66205041472|1|2507507|0|1-AVENIDA CABO BRANCO|1|2|CABO BRANCO|
|0990|C230412153|2-JOAO FRANCISCO|1059|0|66205041473|2|2507508|0|2-AVENIDA CABO AMARELO|1|2|CABO AMARELO|
|0999|C230412153|3-JOSE SILVA|1060|0|66205041474|3|2507509|0|3-AVENIDA CABO PRETO|1|2|CABO PRETO|
)
; Uso um stringsplit para separar o texto em linhas. Cada linha contém 1 registro.
StringSplit, REGISTRO_, Text, `n
;Uso um loop sobre o total de registros (o totalizador é sempre o item 0 da array que o stringsplit criou) para separar cada registro em campos. Cada registro contém 13 campos.
Loop % REGISTRO_0
{
; Uso as duas linhas abaixo para remover os pipes iniciais e finais de cada registro (para que a separação não comece e nem termine com um campo vazio).
StringTrimRight, REGISTRO_%A_INDEX%, REGISTRO_%A_INDEX%, 1
StringTrimLeft, REGISTRO_%A_INDEX%, REGISTRO_%A_INDEX%, 1
; Já a linha abaixo serve para separar o conteúdo de cada registro em seus campos...
StringSplit, REGISTRO_%A_INDEX%_CAMPO_, REGISTRO_%A_Index%, |
}
; A partir daqui tudo fica indexado de forma bem organizada...
;Campo 3 do registro 1:
msgbox % REGISTRO_1_CAMPO_3
; Campo 10 do registro 2:
msgbox % REGISTRO_2_CAMPO_10
; Campo 1 do registro 3:
msgbox % REGISTRO_3_CAMPO_1
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Re: Ler dados separados em txt
Usando o código do garry como base, duas sugestões seriam o uso de objects para agrupar os dados como alternativa ao código do Gio, e o salvamento e recuperação dos dados utilizando biblioteca JSON.
Code: Select all
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#include <JSON> ;veja https://github.com/cocobelgica/AutoHotkey-JSON caso tenha interesse em salvar dados
; salvar script com UTF-8 with BOM
dlm:="|"
var= ;- for test
(ltrim join`r`n
|0110|C230412153|1-CLAUDIA MENDONÇA S|1058|0|66205041472|1|2507507|0|1-AVENIDA CABO BRANCO|1|2|CABO BRANCO|
|0110|C230412153|2-CLAUDIA MENDONÇA S|1058|0|66205041472|1|2507507|0|2-AVENIDA CABO BRANCO|1|2|CABO BRANCO|
|0110|C230412153|3-CLAUDIA MENDONÇA S|1058|0|66205041472|1|2507507|0|3-AVENIDA CABO BRANCO|1|2|CABO BRANCO|
)
lista:={}
Loop,parse,var,`n,`r
{
LR=%A_loopfield%
h:=StrSplit(lr,dlm)
lista.Push({})
lista[A_Index].nome:=h[4]
lista[A_Index].rua:=h[11]
lista[A_Index].cidade:=h[14]
}
Loop % lista.maxindex()
msgbox % lista[A_index].nome . "`n" . lista[A_index].rua . "`n" . lista[A_index].cidade
pessoa:=lista[1]
msgbox % "nova key pessoa.nome " . pessoa["nome"]
pessoa.telefone:="(001)555-0001" ;acrescentando keys ao novo objeto
if pessoa.HasKey("telefone")
msgbox % pessoa.telefone
arquivo:=JSON.Dump(pessoa) ;serializar a variavel
FileAppend, % arquivo, % "dados.json", UTF-8 ; salva em um arquivo
;para recuperar os dados sem precisar fazer o "parse" novamente
;FileRead, json, % "dados.json"
;pessoa:=JSON.Load(json)
;pessoa.nome já estará disponível
exitapp
-
- Posts: 95
- Joined: 13 Sep 2021, 06:08
Re: Ler dados separados em txt
Obrigado pela ajuda de todos, consegui adquirir um vasto conhecimento com essas informações.
Grato!!!
Grato!!!
Return to “Ajuda e Suporte Geral”
Who is online
Users browsing this forum: Bing [Bot] and 8 guests