Sign in to follow this  
Followers 0
Joel

Parsing a Text File

14 posts in this topic

Let me show you a chunk of the text file:

3/6 19:16:09.015  [Raid] Sassuke: yay our first blue of the day
3/6 19:16:10.859  [Raid] Smoochys: isCTraid on?
3/6 19:16:12.062  [Raid] Mejohlnr: im still setting up my buffahoy u will have my buffs in a min
3/6 19:16:17.703  [Raid] Loftus: Darnit - forgot to reactivate CTRaid - it was messing up the other day
3/6 19:17:57.875  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,65/UPD:46
3/6 19:17:58.171  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,47/EVT:5/ATT:Pipa,2255,58696,Y,GK60,,Praetorian Knight`l,4
3/6 19:17:58.515  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,47/EVT:11/ATT:Pipa,2255,58776,Y,GK60,,Praetorian Knight`l,4
3/6 19:17:58.765  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,48/EVT:2/ATT:Reclo`ler,2256,51977,Y,?L60,,Praetorian Knight`l,3
3/6 19:17:58.781  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,48/EVT:2/ATT:Zeriel,2256,51991,Y,?H60,,Praetorian Knight`l,3
3/6 19:17:59.078  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,49/EVT:5/ATT:Reclo`ler,2255,62505,Y,HL60,,Praetorian Knight`l,3
3/6 19:17:59.390  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,49/EVT:3/ATT:Reclo`ler,2256,11319,Y,HL60,,Praetorian Knight`l,3

What I want to do is parse out everything but the following:

3/6 19:16:09.015 [Raid] Sassuke: yay our first blue of the day

3/6 19:16:10.859 [Raid] Smoochys: isCTraid on?

3/6 19:16:12.062 [Raid] Mejohlnr: im still setting up my buffahoy u will have my buffs in a min

3/6 19:16:17.703 [Raid] Loftus: Darnit - forgot to reactivate CTRaid - it was messing up the other day

.. and then store this in a new text file using the following format:

[Raid] Sassuke: yay our first blue of the day

[Raid] Smoochys: isCTraid on?

[Raid] Mejohlnr: im still setting up my buffahoy u will have my buffs in a min

[Raid] Loftus: Darnit - forgot to reactivate CTRaid - it was messing up the other day

The parse has to search the entire text file and exclude anything but the lines that have [Raid] by them.

Can anyone give me some pointers on how to go about this? I would just need some generic examples - no gui examples necessary. I'm just not very good at string separations.

Thanks!


[font="Optima"]"Those who heed life with speculation and contemplation, are the ones stuck home with constipation." - Joel[/font]

Share this post


Link to post
Share on other sites



Let me show you a chunk of the text file:

3/6 19:16:09.015  [Raid] Sassuke: yay our first blue of the day
3/6 19:16:10.859  [Raid] Smoochys: isCTraid on?
3/6 19:16:12.062  [Raid] Mejohlnr: im still setting up my buffahoy u will have my buffs in a min
3/6 19:16:17.703  [Raid] Loftus: Darnit - forgot to reactivate CTRaid - it was messing up the other day
3/6 19:17:57.875  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,65/UPD:46
3/6 19:17:58.171  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,47/EVT:5/ATT:Pipa,2255,58696,Y,GK60,,Praetorian Knight`l,4
3/6 19:17:58.515  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,47/EVT:11/ATT:Pipa,2255,58776,Y,GK60,,Praetorian Knight`l,4
3/6 19:17:58.765  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,48/EVT:2/ATT:Reclo`ler,2256,51977,Y,?L60,,Praetorian Knight`l,3
3/6 19:17:58.781  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,48/EVT:2/ATT:Zeriel,2256,51991,Y,?H60,,Praetorian Knight`l,3
3/6 19:17:59.078  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,49/EVT:5/ATT:Reclo`ler,2255,62505,Y,HL60,,Praetorian Knight`l,3
3/6 19:17:59.390  [7. pknightsZZ] Drabin: GC2/DB:Drabin,194893592,49/EVT:3/ATT:Reclo`ler,2256,11319,Y,HL60,,Praetorian Knight`l,3

What I want to do is parse out everything but the following:

3/6 19:16:09.015 [Raid] Sassuke: yay our first blue of the day

3/6 19:16:10.859 [Raid] Smoochys: isCTraid on?

3/6 19:16:12.062 [Raid] Mejohlnr: im still setting up my buffahoy u will have my buffs in a min

3/6 19:16:17.703 [Raid] Loftus: Darnit - forgot to reactivate CTRaid - it was messing up the other day

.. and then store this in a new text file using the following format:

[Raid] Sassuke: yay our first blue of the day

[Raid] Smoochys: isCTraid on?

[Raid] Mejohlnr: im still setting up my buffahoy u will have my buffs in a min

[Raid] Loftus: Darnit - forgot to reactivate CTRaid - it was messing up the other day

The parse has to search the entire text file and exclude anything but the lines that have [Raid] by them.

Can anyone give me some pointers on how to go about this? I would just need some generic examples - no gui examples necessary. I'm just not very good at string separations.

Thanks!

_FileReadToArray() / For - Next Loop / StringInString(Array, '[Raid]')

[center]Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.[/center]

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Here, it was easy enough :o, and you only asked to get pointed in the direction, you didn't ask someone to do it for you!

#include <file.au3>
$FPath = @DesktopDir & '\testing.txt'
$StringToLocate = '[Raid]'
_GetRaidInfoTxt($FPath, $StringToLocate)

Func _GetRaidInfoTxt($fz_Path, $s_String)
    Local $NewPath = StringTrimRight($fz_Path, 4) & '_RaidInfo.txt'; Create a new text file
    Local $nArray = ''
    If _FileReadToArray($fz_Path, $nArray) Then
        For $x = 1 To UBound($nArray) - 1
            $SnS = StringInStr($nArray[$x], $s_String)
            If $SnS Then
                FileWriteLine($NewPath, StringTrimLeft($nArray[$x], ($SnS - 1)))
            EndIf
        Next
    Else
        SetError(0);'Error reading file'
        Return 0
    EndIf
EndFunc
Edited by SmOke_N

[center]Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.[/center]

Share this post


Link to post
Share on other sites

Here, it was easy enough :o, and you only asked to get pointed in the direction, you didn't ask someone to do it for you!

#include <file.au3>
$FPath = @DesktopDir & '\testing.txt'
$StringToLocate = '[Raid]'
_GetRaidInfoTxt($FPath, $StringToLocate)

Func _GetRaidInfoTxt($fz_Path, $s_String)
    Local $NewPath = StringTrimRight($fz_Path, 4) & '_RaidInfo.txt'; Create a new text file
    Local $nArray = ''
    If _FileReadToArray($fz_Path, $nArray) Then
        For $x = 1 To UBound($nArray) - 1
            $SnS = StringInStr($nArray[$x], $s_String)
            If $SnS Then
                FileWriteLine($NewPath, StringTrimLeft($nArray[$x], ($SnS - 1)))
            EndIf
        Next
    Else
        SetError(0);'Error reading file'
        Return 0
    EndIf
EndFunc
good job. nice looking code.

1100111 00001011101111 00011101101111 00010111100100 00001111110100 00110111110010 00101101111001 0011100i didn't make up this form of encryption, but i like it.credit to the lvl 6 challenge on arcanum.co.nz

Share this post


Link to post
Share on other sites

good job. nice looking code.

Heya Stranger!! Thanks! :o

[center]Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.[/center]

Share this post


Link to post
Share on other sites

Heya Stranger!! Thanks! :o

Thanks!

That is exactly what I was looking for. I'll compile it and test it out shortly.


[font="Optima"]"Those who heed life with speculation and contemplation, are the ones stuck home with constipation." - Joel[/font]

Share this post


Link to post
Share on other sites

Works great!

Except, It's a mass parse with no enter at the end of the line. I'll have to figure out where to place an enter in the code. There's nothing special that I need to look for when doing this correct?

thanks again!


[font="Optima"]"Those who heed life with speculation and contemplation, are the ones stuck home with constipation." - Joel[/font]

Share this post


Link to post
Share on other sites

Works great!

Except, It's a mass parse with no enter at the end of the line. I'll have to figure out where to place an enter in the code. There's nothing special that I need to look for when doing this correct?

thanks again!

Have no idea what your talking about... 'Enter' when writing to another file like my example? Or are you sending this to some type of control?

[center]Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.[/center]

Share this post


Link to post
Share on other sites

FileWriteLine($NewPath, StringTrimLeft($nArray[$x], ($SnS - 1))& @CRLF))

Taking a guess here. :o


[font="Optima"]"Those who heed life with speculation and contemplation, are the ones stuck home with constipation." - Joel[/font]

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

FileWriteLine($NewPath, StringTrimLeft($nArray[$x], ($SnS - 1))& @CRLF))

Taking a guess here. :o

If your trying to seperate them more than just a line, yes, that would work !!

Edit:

To see an actual space try this:

#include <file.au3>
$FPath = @DesktopDir & '\testing.txt'
$StringToLocate = '[Raid]'
_GetRaidInfoTxt($FPath, $StringToLocate)

Func _GetRaidInfoTxt($fz_Path, $s_String)
    Local $NewPath = StringTrimRight($fz_Path, 4) & '_RaidInfo.txt'; Create a new text file
    Local $nArray = ''
    If _FileReadToArray($fz_Path, $nArray) Then
        For $x = 1 To UBound($nArray) - 1
            $SnS = StringInStr($nArray[$x], $s_String)
            If $SnS Then
                $AddCRLF = StringTrimLeft($nArray[$x], ($SnS - 1)) & @CRLF & @CRLF
                FileWriteLine($NewPath, $AddCRLF)
            EndIf
        Next
    Else
        SetError(0);'Error reading file'
        Return 0
    EndIf
EndFunc
Edited by SmOke_N

[center]Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.[/center]

Share this post


Link to post
Share on other sites

Hrm, two things then.

first, using your script works and here is what it looks like though:

[Raid] Sassuke: yay our first blue of the day[Raid] Smoochys: isCTraid on?[Raid] Mejohlnr: im still setting up my buffahoy u will have my buffs in a min[Raid] Loftus: Darnit - forgot to reactivate CTRaid - it was messing up the other day

So, that's why I thought about entering a line break. But my syntax must be incorrect within the script or else something else is going on. I just want to enter a line break before the [Raid].

It looks great though - just needs a minor tweak.


[font="Optima"]"Those who heed life with speculation and contemplation, are the ones stuck home with constipation." - Joel[/font]

Share this post


Link to post
Share on other sites

Read my edit


[center]Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.[/center]

Share this post


Link to post
Share on other sites

100% perfect mate - and thanks!

The spacing in your new edit is "much" better.


[font="Optima"]"Those who heed life with speculation and contemplation, are the ones stuck home with constipation." - Joel[/font]

Share this post


Link to post
Share on other sites

100% perfect mate - and thanks!

The spacing in your new edit is "much" better.

"much" eh?

1100111 00001011101111 00011101101111 00010111100100 00001111110100 00110111110010 00101101111001 0011100i didn't make up this form of encryption, but i like it.credit to the lvl 6 challenge on arcanum.co.nz

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0