title: Splitting a single-line address into its constituent parts? I'm thinking reg-ex, but I'm not sure?
body: <p>I have a .csv of about 8000 rows.  In this csv, one of the fields is a one-line mailing address.  I want to split this one-line mailing address into its constituent parts (street address, city, state, zip code).  Here is what my csv more-or-less looks like:</p>
  
  <pre><code>Name| Full Address | Street | City | State | PostalCode
  
  Mary| 123 Yor Street Apt 5 Los Angeles California 12345 |Null | Null| Null | Null |
  Bob | 567 Other Ave Chicago Illinois 56789              | Null | Null | Null | Null|
  Jim | 890 Last Street COlorado Springs Colorado 80919   | Null | Null | Null | Null|
  </code></pre>
  
  <p>So thats what I have.  What I am looking for is this output:</p>
  
  <pre><code>Name     Full Address                                    Street                City          State       PostalCode
  Mary | 123 Yor Street Apt 5 Los Angeles California 12345 | 123 Yor Street Apt 5| Los Angeles| California| 12345|
  Bob  | 567 Other Ave Chicago Illinois 56789              | 567 Other Ave    | Chicago | Illinois | 56789|
  Jim  | 890 Last Street COlorado Springs Colorado 80919   | 890 Last Street | Colorado SPrings | Colorado | 80919
  </code></pre>
  
  <p>Note: The most important parts that I'd like to be able to separate are <strong>City</strong> and <strong>State</strong>, so if the variations on street names (like including apartment #s) complicate things, that can be ignored if I can get <strong>City</strong> and <strong>State</strong> successfully extracted.</p>
  
  <p>I don't have a lot of experience working with strings, So I'm kinda starting at square one.  My first thought is that a regex might be able to parse this out, but I'm not sure how I would construct a regex to identify those things.  Because of this, I'm not sure it's the correct approach.</p>
  
  <p>There are no commas or anything like that which would make obvious separators, which is the other complicating part.  Maybe using <code>word.split()</code> on the <code>Full Address</code> field and then using a <code>isin()</code> with a dictionary of states for the state column?  </p>
  
  <p>So, anyone who can provide some direction would be most appreciated!</p>
  
  <p>Thank you for your time.</p>
  
  <p>PS - I apologize for the table formatting.  </p>