Skip to content

Instantly share code, notes, and snippets.

@wckdouglas
Last active January 27, 2016 16:38
Show Gist options
  • Save wckdouglas/d5d6e26aa5cb977f22df to your computer and use it in GitHub Desktop.
Save wckdouglas/d5d6e26aa5cb977f22df to your computer and use it in GitHub Desktop.
cleaning bibtex file for correct upper case title and remove url record. Running by: PYTHONIOENCODING=utf-8 python cleanBib.py
#!/bin/env python
import bibtexparser
import argparse
import sys
import re
from bibtexparser.bibdatabase import BibDatabase
from bibtexparser.bwriter import BibTexWriter
def modifiedTitle(title):
newtitle = ''
for word in title.split(' '):
if re.match('.*[A-Z]', word) and word[0] != '{' and word[-1] != '}':
newtitle += ' {' + word + '}'
else:
newtitle += ' ' + word
return newtitle.strip(' ')
def parseEntry(bibEntry, outBib):
for key in bibEntry.iterkeys():
if 'url' in key or 'Url' in key or 'link' in key:
del bibEntry[key]
bibEntry['title'] = modifiedTitle(bibEntry['title'])
return bibEntry
def main(inBib, outBib):
bib_database = bibtexparser.load(inBib)
db = BibDatabase()
db.entries = [parseEntry(bibEntry, outBib) for bibEntry in bib_database.entries]
inBib.close()
writer = BibTexWriter()
outBib.write(writer.write(db))
outBib.close()
return 0
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Cleaning bibtex file for upper case title and remove url')
parser.add_argument('-i','--inBib',required=True,
type=argparse.FileType('r'), default=sys.stdin,
help='input bibtex file')
parser.add_argument('-o','--outBib', required=True,
type=argparse.FileType('w'), default=sys.stdout, help ='output file')
args = parser.parse_args()
inBib = args.inBib
outBib = args.outBib
main(inBib, outBib)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment