Skip to content

Instantly share code, notes, and snippets.

View twneale's full-sized avatar

Thom Neale twneale

View GitHub Profile
@twneale
twneale / gist:4353639
Last active December 10, 2015 00:48
Bumble from the shell!
import requests
def bumble(text):
url="http://smokehouse.sunlightlabs.org/action"
requests.get(url, params=dict(mode='bumble', message=text))
print 'bumbled: %r' % text
if __name__ == '__main__':
@twneale
twneale / gist:5110912
Last active December 14, 2015 15:49
Parse plain text columns into a table.
class PlaintextColumns(object):
'''
Parse plain text columns like this into a table:
cols = """
Austin Errington Lawson, L Pryor
Bartlett Forestal Macer Riecken
Battles GiaQuinta Moed Shackleford
Bauer Goodin Moseley Smith, V
Brown,C Hale Niezgodsk Stemler
@twneale
twneale / gist:5118262
Created March 8, 2013 17:38
Make a nested class definition inherit the attributes of the class in whose scope it was defined.
'''Make a nested class definition inherit the attributes of
the class in whose scope it was defined.
'''
class Context(object):
'''Base type for Context objects.
'''
pass
@twneale
twneale / gist:5613913
Created May 20, 2013 17:49
NY State assembly voter ids.
"{\"NYV00010065\": {\"NYL000076\": 1, \"NYL000167\": 1, \"NYL000166\": 1, \"NYL000165\": 1, \"NYL000164\": 1, \"NYL000088\": 1, \"NYL000162\": 1, \"NYL000161\": 1, \"NYL000160\": 1, \"NYL000277\": 1, \"NYL000275\": 1, \"NYL000087\": 1, \"NYL000080\": 1, \"NYL000081\": 1, \"NYL000169\": 1, \"NYL000168\": 1, \"NYL000178\": 1, \"NYL000170\": 1, \"NYL000171\": 1, \"NYL000173\": 1, \"NYL000174\": 1, \"NYL000175\": 1, \"NYL000176\": 1, \"NYL000177\": 1, \"NYL000070\": 1, \"NYL000073\": 1, \"NYL000072\": 1, \"NYL000075\": 1, \"NYL000265\": 1, \"NYL000077\": 1, \"NYL000267\": 1, \"NYL000269\": 1, \"NYL000089\": 1, \"NYL000109\": 1, \"NYL000108\": 1, \"NYL000105\": 1, \"NYL000104\": 1, \"NYL000107\": 1, \"NYL000106\": 1, \"NYL000101\": 1, \"NYL000100\": 1, \"NYL000103\": 1, \"NYL000102\": 1, \"NYL000215\": 1, \"NYL000214\": 1, \"NYL000217\": 1, \"NYL000216\": 1, \"NYL000066\": 1, \"NYL000067\": 1, \"NYL000064\": 1, \"NYL000212\": 1, \"NYL000068\": 1, \"NYL000069\": 1, \"NYL000219\": 1, \"NYL000218\": 1, \"NYL000185\":
@twneale
twneale / gist:5614681
Created May 20, 2013 19:12
My Borked R setup
Package: r-base
Priority: optional
Section: universe/math
Installed-Size: 70
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Dirk Eddelbuettel <edd@debian.org>
Architecture: all
Version: 2.14.1-1
Depends: r-base-core (>= 2.14.1-1), r-recommended (= 2.14.1-1)
Recommends: r-base-html, r-doc-html
@twneale
twneale / Setup citation-network-analysis
Created July 27, 2013 19:00
How to set up the materials for my PyData Boston 2013 talk on citation network analysis.
$ virtualenv pydata2013
$ source ./pydata2013/bin/activate
$ git clone git@github.com:twneale/citation-network-analysis.git
$ cd citation-network-analysis
# Note: if the follwing step fails, you're missing dependencies. If resolving them is not you're cup of tea,
# I recommend installing the free anaconda distribution of python from Continuum Analytics: https://store.continuum.io/
$ pip install -r requirements.txt
@twneale
twneale / gist:6371143
Last active December 21, 2015 21:49
My script for cheating at Boggle. words.json is just the scrabble dictionary as a big list.
'''
A boggle board is a mapping of coordinates to letters.
'''
from os.path import dirname, abspath, join
import pdb
import json
import random
from itertools import chain, product
from functools import partial
from operator import add, itemgetter
@twneale
twneale / gist:6443253
Created September 4, 2013 21:42
Salty bet search script
from operator import methodcaller
import lxml.html
from whoosh.index import create_in
from whoosh.fields import *
from whoosh.qparser import QueryParser
class Stats(object):
@twneale
twneale / gist:7826458
Created December 6, 2013 15:26
How to compare two strings with difflib
>>> import difflib
>>> for opcode in difflib.SequenceMatcher(None, "This is a test.", "That is a tent").get_opcodes():
... print opcode
...
('equal', 0, 2, 0, 2)
('replace', 2, 4, 2, 4)
('equal', 4, 12, 4, 12)
('replace', 12, 13, 12, 13)
('equal', 13, 14, 13, 14)
('delete', 14, 15, 14, 14)
@twneale
twneale / gist:8363605
Created January 10, 2014 22:05
Get a set of all paragraph numbers used in the Code of Federal Regulations
import re
import os
import sys
import json
import contextlib
import lxml.etree
@contextlib.contextmanager