<font color='black' size='2' face='arial'>
<div><FONT face="Arial, Helvetica, sans-serif">Hi Vince,</FONT></div>


<div>&nbsp;</div>


<div>Thanks very much for the one-line version--unfortunately, I still get errors. The overall script runs over every text file in a directory, but as soon as it hits a text file without a &lt;genre&gt; tag, it gives this error:</div>


<div>&nbsp;</div>


<div>Traceback (most recent call last):<br>
&nbsp; File "C:\Users\tylersc\Desktop\Tyler2\Tyler\words_per_review_IMDB_9-13-10.py", line 168, in &lt;module&gt;<br>
&nbsp;&nbsp;&nbsp; main(".","output.csv")<br>
&nbsp; File "C:\Users\tylersc\Desktop\Tyler2\Tyler\words_per_review_IMDB_9-13-10.py", line 166, in main<br>
&nbsp;&nbsp;&nbsp; os.path.walk(top_level_dir, reviewDirectory, writer )<br>
&nbsp; File "C:\Python26\lib\ntpath.py", line 259, in walk<br>
&nbsp;&nbsp;&nbsp; func(arg, top, names)<br>
&nbsp; File "C:\Users\tylersc\Desktop\Tyler2\Tyler\words_per_review_IMDB_9-13-10.py", line 162, in reviewDirectory<br>
&nbsp;&nbsp;&nbsp; reviewFile( dirname+'/'+fileName, args )<br>
&nbsp; File "C:\Users\tylersc\Desktop\Tyler2\Tyler\words_per_review_IMDB_9-13-10.py", line 74, in reviewFile<br>
&nbsp;&nbsp;&nbsp; rgenre = re.split(r';', rf.info["genre"])<br>
KeyError: 'genre'<br>
</div>


<div>I'm about to give what may be too much information--I really thought there must be a way to say "don't choke if you don't find any rgenres because rf.info["genre"] was empty". But maybe I need to define the "None" condition earlier?</div>


<div>&nbsp;</div>


<div>Basically a text file has this structure:</div>


<div>&lt;info&gt;</div>


<div>&lt;title&gt;High Noon&lt;/title&gt;</div>


<div>&lt;genre&gt;Drama;Western&lt;/genre&gt; # But this tag doesn't exist for all text files</div>


<div># etc</div>


<div>&lt;/info&gt;</div>


<div>&lt;review&gt;</div>


<div>&lt;author&gt;u493498&lt;/author&gt;</div>


<div>&lt;rating&gt;9 out of 10&lt;/rating&gt;</div>


<div>&lt;summary&gt;A great flick&lt;/summary&gt;</div>


<div>&lt;text&gt;blah blah blah&lt;/text&gt;</div>


<div># etc</div>


<div>&lt;/review&gt;</div>


<div># next review--all about the movie featured in the info tags</div>


<div>&nbsp;</div>


<div>&nbsp;</div>


<div style="CLEAR: both"></div>
<br>
<br>


<div style="FONT-FAMILY: arial,helvetica; COLOR: black; FONT-SIZE: 10pt">-----Original Message-----<br>
From: Vince Spicer &lt;vince@vinces.ca&gt;<br>
To: aeneas24@priest.com<br>
Cc: tutor@python.org<br>
Sent: Mon, Sep 13, 2010 9:08 pm<br>
Subject: Re: [Tutor] If/elif/else when a list is empty<br>
<br>


<div id=AOLMsgPart_2_ca8a283f-05be-4304-8a15-f7f0396315ca><br>
<br>


<div class=gmail_quote>On Mon, Sep 13, 2010 at 9:58 PM, <SPAN dir=ltr>&lt;<A href="mailto:aeneas24@priest.com">aeneas24@priest.com</A>&gt;</SPAN> wrote:<br>

<BLOCKQUOTE style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class=gmail_quote><FONT color=black size=2 face=arial>

<div><FONT face="Arial, Helvetica, sans-serif"></FONT>Hi,</div>


<div>&nbsp;</div>


<div>I'm parsing IMDB movie reviews (each movie is in its own text file). In my script, I'm trying to extract genre information. Movies have up to three categories of genres--but not all have a "genre" tag and that fact is making my script abort whenever it encounters a movie text file that doesn't have a "genre" tag. </div>


<div>&nbsp;</div>


<div>I thought the following should solve it, but it doesn't. The basic question is how I say "if genre information doesn't at all, just make rg1=rg2=rg3="NA"?</div>


<div>&nbsp;</div>


<div>rgenre = re.split(r';', <A href="http://rf.info/" target=_blank>rf.info</A>["genre"]) # When movies have genre information they store it as &lt;genre&gt;Drama;Western;Thriller&lt;/genre&gt;</div>


<div>&nbsp;</div>


<div>if len(rgenre)&gt;0:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if len(rgenre)&gt;2:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rg1=rgenre[0]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rg2=rgenre[1]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rg3=rgenre[2]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif len(rgenre)==2:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rg1=rgenre[0]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rg2=rgenre[1]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rg3="NA"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif len(rgenre)==1:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rg1=rgenre[0]<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rg2="NA"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rg3="NA"<br>
&nbsp;&nbsp;&nbsp;else len(rgenre)&lt;1: # I was hoping this would take care of the "there is no genre information" scenario but it doesn't<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rg1=rg2=rg3="NA"</div>


<div>&nbsp;</div>


<div>This probably does a weird nesting thing, but even simpler&nbsp;version I have tried don't work. </div>


<div>&nbsp;</div>


<div>Thanks very much for any help!</div>


<div>&nbsp;</div>


<div>Tyler<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
<br>
</div>


<div style="CLEAR: both"></div>
</FONT><br>
_______________________________________________<br>
Tutor maillist &nbsp;- &nbsp;<A href="mailto:Tutor@python.org">Tutor@python.org</A><br>
To unsubscribe or change subscription options:<br>
<A href="http://mail.python.org/mailman/listinfo/tutor" target=_blank>http://mail.python.org/mailman/listinfo/tutor</A><br>
<br>
</BLOCKQUOTE></div>
<br>


<div>Hey Tyler you can simplify this with a onliner.</div>


<div><br>
</div>


<div>rg1, rg2, rg3 = rgenre + ["NA"]*(3-len(rgenre[:3]))</div>


<div><br>
</div>


<div>Hope that helps, if you have any questions feel free to ask.</div>


<div><br>
</div>


<div>Vince</div>
</div>
<!-- end of AOLMsgPart_2_ca8a283f-05be-4304-8a15-f7f0396315ca --></div>
</font>