Extracting all of the postcodes from your text message history

 

 

(This post is a ‘tidy up’ of the live notes I made when playing with some text)

 

I’ve always wanted an app that could scan through your SMS history and pull out the addresses that people have sent you over the years. It would be really handy for travelling, posting surprise presents and checking to see, for example, if anyone you knew lived near a place you were going.

For this post, I extracted all the SMS messages from my iPhone, so it occurred to me I could do the next best thing.

 

If you’d like to repeat this work – I’m using OSX and I extracted the iPhone messages with iExplorer into CSV files.   I’m also using UK postcodes which have a particular structure:

 

The structure of a postcode is a one or two-letter postcode area code named for a local town or area of London, one or two digits signifying a district in that region, a space, and then an arbitrary code of one number and two letters. For example, the postcode of the University of Roehampton in London is SW15 5PU, where SW stands for south-west London. The postcode of GCHQ is GL51 0EX, where GL signifies the postal town of Gloucester.

(from wikipedia)

 

To match postcodes I’m using this regular expression:

[A-Z][0-9]* [0-9][A-zA-Z][a-zA-Z]

 

Alert readers will notice that that’s a little off, but it works for these purposes.

 

With that all you need to do to extract all of the postcodes you’ve ever been sent is to run this command in the root of the folder that you extracted your SMS messages to.

grep “[A-Z][0-9]* [0-9][A-zA-Z][a-zA-Z]” *.csv > codes.csv

The results need a small amount of clearing up (I’m afraid I’m going to avoid sharing all of my friend’s address here), but it worked, I now I have a handy set of postcodes, which makes it much easier to surprise friends with presents.

Leave a Reply