-
Notifications
You must be signed in to change notification settings - Fork 16
/
convert.py
executable file
·73 lines (61 loc) · 1.85 KB
/
convert.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env python3
"""
This is a simple (and probably broken) Python script that converts BibTeX
entries to CSV.
Input is via standard input.
Output is via standard output.
"""
from os import getcwd
from os import listdir
from re import match
from re import search
from re import findall
from sys import stdin
from string import capwords
entries = []
entry = {}
for line in stdin:
if (match('^@', line.strip())):
if entry != {}:
entries.append(entry)
entry = {}
elif (match('url', line.strip())):
value, = findall('\{(\S+)\}', line)
entry["url"] = value
elif (search('=', line.strip())):
key, value = [v.strip(" {},\n") for v in line.split("=", maxsplit=1)]
entry[key] = value
entries.append(entry)
for entry in entries:
author = "Anonymous"
if "author" in entry:
author = entry["author"]
elif "authors" in entry:
author = entry["authors"]
elif "editor" in entry:
author = entry["editor"]
title = "No title"
if "title" in entry:
title = entry["title"]
publish = "No publishing information"
if "journal" in entry:
publish = entry["journal"]
if "journaltitle" in entry:
publish = entry["journaltitle"]
elif "booktitle" in entry:
publish = entry["booktitle"]
elif "howpublished" in entry:
publish = entry["howpublished"]
elif "type" in entry:
publish = entry["type"]
elif "url" in entry:
publish = "Website: {}".format(entry["url"])
elif "crossref" in entry:
publish = entry["crossref"].replace("_", " ")
publish = capwords(publish)
elif "publisher" in entry:
publish = entry["publisher"]
year = "Unknown year"
if "year" in entry:
year = entry["year"]
print("{}\t{}\t{}\t{}".format(author, title, year, publish))