13 05 2011 bioinformatics Python Tweet
pubmedのidからdoiを調べたい。
BeautifulSoupでXMLをパースするのが良いのだが、ソース見たらげんなりした(preってなんやねん)。というわけで、MEDLINE形式のデータから正規表現でdoiを抜き出してます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!/usr/bin/env python import urllib2 import re,sys def pmid2doi(pmid): url = "http://www.ncbi.nlm.nih.gov/pubmed/%s?dopt=MEDLINE" % pmid r = re.compile('AID - (10.\d+/.+?) \[doi\]') response = urllib2.urlopen(url) if response.code == 200: s = response.read() m = r.search(s) return m.group(1) else: return "error: %d" % response.code if __name__ == '__main__': if len(sys.argv) == 2: print pmid2doi(sys.argv[1]) else: print "usage: %s [pmid]" % sys.argv[0] |
コマンドラインから使う場合には
$ pmid2doi.py 20053000 10.1021/ci900416a
Bioinformatics Programming Using Python
Mitchell L. Model
Oreilly & Associates Inc / 5119円 ( 2009-12-23 )
Mitchell L. Model
Oreilly & Associates Inc / 5119円 ( 2009-12-23 )