Skip to content

Instantly share code, notes, and snippets.

@studiawan
Last active June 12, 2017 02:18
Show Gist options
  • Save studiawan/658652fa8dcf9b2812792a0f4b5391b6 to your computer and use it in GitHub Desktop.
Save studiawan/658652fa8dcf9b2812792a0f4b5391b6 to your computer and use it in GitHub Desktop.
A Python script to filter exported bib file from Mendeley Desktop
#/usr/bin/env python
# a Python script to filter exported bib file from Mendeley Desktop
import sys
import glob
import os
# read all .bib files
bibfiles = glob.glob('*.bib')
# write filtered and merged bibfile to new file
fbib = open('mybibfile.bib', 'w')
for bibfile in bibfiles:
# open bib file
with open(bibfile, 'r') as f:
bibtexts = f.readlines()
# remove unnecessary fields
removed_words = ['abstract', 'doi', 'isbn', 'mendeley-groups', 'keywords',
'file', 'issn', 'url', 'archivePrefix', 'arxivId',
'eprint', 'pmid', 'primaryClass']
filtered = []
for bibtext in bibtexts:
flag = True
if '@misc' in bibtext:
if 'url' in removed_words:
removed_words.remove('url')
field = bibtext.split('=')[0]
for word in removed_words:
if word in field:
flag = False
break
if flag:
filtered.append(bibtext)
# tidy up key-value
key_width = 15
tidyup = []
for bibtext in filtered:
if '=' in bibtext:
properties = bibtext.split('=')
key = properties[0]
if key.strip() == 'url':
key = 'howpublished'
key_len = len(key)
if key_len <= key_width:
space_len = key_width - key_len
space = ' '
for i in range(space_len):
space += ' '
key += space
tidyup.append(' ' + key + '=' + properties[1])
elif '}' in bibtext:
tidyup.append(bibtext + '\n')
else:
tidyup.append(bibtext)
for t in tidyup:
fbib.write(t)
fbib.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment