text parsing

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
Can someone point me in the direction of some good documentation on text  

I want to take a bunch of text files (rtf), read them in and dump the  
contents in a database.  The files are effectively a flat file database,  
with I suspect some fairly intricate programming needed to process the  
files.  Unfortunately, they are laid out for human readability, not data  

Thanks, Carolyn

Re: text parsing

Quoted text here. Click to load it

A few questions.

How many is a "bunch"?
What would the target database be -- MySQL?
What table and column structures do you envision?
Perhaps simply a single table with two columns:
filename (key) and a memo field containing the data?
What is the purpose behind doing this?

Re: text parsing

McKirahan wrote:
Quoted text here. Click to load it
A few answers

A bunch is about a dozen.  Basically one large file that was broken into  
sixteen subsets, following the initial letter for each record.

The target database would be MySQL

I haven't looked too closely at the data, but I think one main table  
with a few linked tables for those cases where there may be more than  
one piece of data for a category.  There are about 25 categories to each  
record.  Eventually there would be additional structure added around the  
imported data, but that isn't relevant to importing the data itself.  (I  
will confirm this before beginning to code.

The purpose: I am a D&D fan and I run games.  I would like to be able to  
reference the material and automate much of the process so I don't have  
to lug and reference 20lbs of books.

Thanks,  Carolyn

Re: text parsing

Quoted text here. Click to load it

Any chance the RTF files are online so I could look at them?

Perhaps http://www.wizards.com/default.asp?x=d20/article/srd35?
http://www.wizards.com/d20/files/v35/SRD.zip contains 88 RTF files.

Also, I gather, this might be a one-time effort; correct?

Not what you requested but ...

I've developed a VBScript solution that takes the following approach:
for a given folder, each RTF file is opened in MS-Word and saved
as a text file which is opened and read then saved in an MS-Access
database table containing 3 columns: id (AutoNumber), file, data.

Using those 86 RTF files it created a 10MB MS-Access database.

Re: text parsing

McKirahan wrote:
Quoted text here. Click to load it

Yes, they are online.  Yes, you can look at them.  Yes, those are the  
files except I only care about the 16 monster files.  Yes, this is a one  
time effort.

My goal is to create a encounter generation program - where I key in  
climate, geography, season, encounter level, time of day, proximity to  
civilization, and the application gives me a suggested random encounter  
suited to the scenario.  For example, if the party was wandering around  
the city sewers on a hot summer night, they might encounter a pack of  
giant rats being led by a were rat.  I would then want the program to  
determine how many rats, how many hit points each, and any other  
pertinent variable data, including what weapons and treasure the wererat  
was carrying and using.

Having the rtfs loaded into a database like your script does, would  
enable faster searches, it would not go the next step and perform the  
various calculations based on the results of the searches.  It is a good  
start, but if it has stripped any of the rtf encoding, it may make it  
harder to have a script find the various 'fields'.

Thanks,  Carolyn

Re: text parsing

Quoted text here. Click to load it
Quoted text here. Click to load it

I counted 17 "Monster" prefixed files.

My version creates ".txt" files which do strip "the rtf encoding".

An alternative version creates ".htm" files which retains the
formatting you want; I don't think you really want all of the
"rtf encoding" unless you fully understand the specification:
(search on "rtf specification".)

Perhaps, as an intermediate step, you would like all of the
"Monster" rtfs converted to HTML and made available via
an interface to open one or more for viewing.

As HTML files they consume 7.5MB.

Re: text parsing

McKirahan wrote:
Quoted text here. Click to load it

There are a couple of the monster prefixed files that are not listings  
of monsters but other information, such as monsters as characters.  
Anyway, exact number of files is not overly important.

I just did a little test, and looking at the files, I think the easiest  
to work with may indeed be the text file.

Here is an example to illustrate:  I am pulling the monster name, type  
and hit dice from each file format.

in rtf...
\par }{\fs36
\par }\trowd \trgaph108\trleft-108\trbrdrh\brdrs\brdrw10  
\clvertalt\clbrdrb\brdrs\brdrw10 \cltxlrtb\clftsWidth1  
\cellx6840\pard \ql \li0\ri0\nowidctlpar\intbl\faauto\rin0\lin0 {\b\fs20  
  }{\b\fs19 \cell }{\fs20 Huge Aberration}{\fs19 \cell }\pard \ql  
{\fs19 \trowd \trgaph108\trleft-108\trbrdrh
\clvertalt\clbrdrb\brdrs\brdrw10 \cltxlrtb\clftsWidth1  
\cltxlrtb\clftsWidth3\clwWidth4871 \cellx6840\row }\trowd
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10  
\cltxlrtb\clftsWidth1 \cellx1969\clvertalt\clbrdrt\brdrs\brdrw10  
\cltxlrtb\clftsWidth3\clwWidth4871 \cellx6840\pard \ql  
\li0\ri0\nowidctlpar\intbl\faauto\rin0\lin0 {\b\fs20 Hit Dice:}{\b\fs19  
\cell }{\fs20 15d8+78 (145 hp)}{\fs19 \cell }\pard \ql

in .html...
<P STYLE="page-break-after: avoid"><FONT SIZE=5>DARKMANTLE</FONT></P>
    <COL WIDTH=124>
    <COL WIDTH=258>

        <TD WIDTH=124>
            <P CLASS="western">
        <TD WIDTH=258>
            <P CLASS="western"><FONT SIZE=2>Small Magical Beast</FONT></P>

        <TD WIDTH=124>
            <P CLASS="western"><FONT SIZE=2><B>Hit Dice:</B></FONT></P>
        <TD WIDTH=258>
            <P CLASS="western"><FONT SIZE=2>1d10+1 (6 hp)</FONT></P>

in .txt...


Small Magical Beast
Hit Dice:
1d10+1 (6 hp)


So, looking at that and assuming the rest will be similar, the text  
version looks the easiest to deal with.  If document styling such as  
'title', 'heading' and 'subheading' had been used, maybe not, but in  
this case, a new line seems to denote either a field heading or field  
data.  There are exceptions of course - particularly when denoting a  
category of monster.

That doies bring me a little closer to achievign my goal.  Thanks for  
the assistance.  :)


Re: text parsing

Quoted text here. Click to load it

So I gather you have what you need.

I'd suggest just manually converting the files (via MS-Word Save-As)
rather than automating that part of the process since it's a one-time
effort and there aren't that many files.

Below is a page that will list and allow selection of the "Monster"
files via a dropdown with the page displayed in an <iframe>.  The
<select> is on the right to allow quicker access to the scroll bar.
Save it as "Monster.htm" and put it in the same folder as the
"Monster" files as Web pages; (i.e. with a ".htm" extension).
Doubleclick on the filename in Windows Explorer or create a
desktop shortcut to it for quicker access.

Watch for word-wrap.

<script type="text/javascript">
function monster(that) {
    var what = document.getElementById("id_select").value;
    document.getElementById("id_picked").innerHTML = what;
    document.getElementById("id_iframe").src = what;
<style type="text/css">
.font { font-family:Arial; font-size:8pt }
.zero { margin:0px; padding:0px }
<body class="zero">
<form action="" method="get" class="zero">
<table align="center" border="0" cellpadding="0" cellspacing="0"
<tr valign="top">
    <span id="id_picked" class="font"></span><br>
    <iframe id="id_iframe" width="860" height="600"></iframe>
  <td class="font">
    &nbsp; &nbsp; &nbsp; <b>Monster Files:</b><br>
    <select class="font" size="19" id="id_select" onchange="monster(this)">
    <option value="">
    <option value="MonstersIntro-A.htm">Monsters Intro-A
    <option value="MonstersB-C.htm">Monsters B-C
    <option value="MonstersD-De.htm">Monsters D-De
    <option value="MonstersDi-Do.htm">Monsters Di-Do
    <option value="MonstersDr-Dw.htm">Monsters Dr-Dw
    <option value="MonstersE-F.htm">Monsters E-F
    <option value="MonstersG.htm">Monsters G
    <option value="MonstersH-I.htm">Monsters H-I
    <option value="MonstersK-L.htm">Monsters K-L
    <option value="MonstersM-N.htm">Monsters M-N
    <option value="MonstersO-R.htm">Monsters O-R
    <option value="MonstersS.htm">Monsters S
    <option value="MonstersT-Z.htm">Monsters T-Z
    <option value=""> - - - - - - - - - - - - -
    <option value="MonsterFeats.htm">Monster Feats
    <option value="MonstersAnimals.htm">Monsters Animals
    <option value="MonstersasRaces.htm">Monsters as Races
    <option value="MonstersVermin.htm">Monsters Vermon

Re: text parsing

McKirahan wrote:
Quoted text here. Click to load it

I was going to do the conversion manually, with open office.  Using word  
would cost too much, as I would have to go and purchase it.  I do have a  
windows box to install it on - games and website testing, but other than  
that - linux and open office.  The web page you just gave me works fine  
either way.  Thanks!


Re: text parsing

Carolyn Marenger wrote:
Quoted text here. Click to load it

Only if

1/. It was los angeles

2/. They had all taken too many mind enhacing drugs.

Otherwise its likely to be Viles disease,  at the most interesting ;-)

Quoted text here. Click to load it

Go full database surely. The art is to define the 'monster' table with  
extensibility for all the monster classes one might encounter.
When doing ANYTHING based on a database, the most important thing is to  
spend time designing table layouts. And write a data dictionary. And  
keep it up to date.

Quoted text here. Click to load it

Re: text parsing

The Natural Philosopher wrote:
Quoted text here. Click to load it

That I know.  Can you recommend any software for documenting the  
database design?  Should I stick to ye old word processor?

Thanks,  Carolyn

Re: text parsing

Carolyn Marenger wrote:
Quoted text here. Click to load it

Try comp.lang.mysql.  They've got all kinds of suggestions on database  
stuff there.

Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.

Re: text parsing


on 01/21/2008 06:34 PM Carolyn Marenger said the following:
Quoted text here. Click to load it

You may want ti try this RTF parser class:



Manuel Lemos

PHP professionals looking for PHP jobs

PHP Classes - Free ready to use OOP components written in PHP

Re: text parsing

Manuel Lemos wrote:
Quoted text here. Click to load it

I am signing up, so I can check it out.

Thanks,  Carolyn

Site Timeline