Skip to content

Commit c553dc0

Browse files
authored
Merge pull request #16 from QuantumPL/performance-optimization-bibtex-compatibility-17097782682516428210
⚡ Optimize bibtex-compatibility.py regex and string search performance
2 parents 19371af + 168c6b1 commit c553dc0

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

bibtex-compatibility.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,34 +30,36 @@
3030
old_db = open(db_name + ".bib","r")
3131
new_db = open("bibtex.bib","w")
3232

33-
for line in old_db.readlines():
34-
date_pattern = re.search(r"date.*{(\d+)-?(\d+)?.*}",line)
33+
date_re = re.compile(r"date.*{(\d+)-?(\d+)?.*}")
34+
35+
for line in old_db:
36+
date_pattern = date_re.search(line)
3537
if date_pattern:
3638
new_db.write(" year = {{{0:s}}},\n".format(date_pattern.group(1)))
3739
# print " year = {{{0:s}}},\n".format(date_pattern.group(1)),
3840
if date_pattern.group(2) is not None:
3941
month = month_names[int(date_pattern.group(2))];
4042
new_db.write(" month = {},\n".format(month))
41-
elif re.search("journaltitle",line):
43+
elif "journaltitle" in line:
4244
new_db.write(line.replace("journaltitle","journal"))
43-
elif re.search("location",line):
45+
elif "location" in line:
4446
new_db.write(line.replace("location","address"))
45-
elif re.search("eprinttype",line):
47+
elif "eprinttype" in line:
4648
new_db.write(line.replace("eprinttype","archiveprefix"))
4749
# the following change is not suitable for techreports
48-
# elif re.search("institution",line):
50+
# elif "institution" in line:
4951
# new_db.write(line.replace("institution","school"))
50-
elif re.search("@online",line):
52+
elif "@online" in line:
5153
new_db.write(line.replace("@online","@unpublished"))
52-
elif re.search("@report",line):
54+
elif "@report" in line:
5355
new_db.write(line.replace("@report","@techreport"))
54-
elif re.search("@inbook",line):
56+
elif "@inbook" in line:
5557
new_db.write(line.replace("@inbook","@incollection"))
56-
elif re.search("@collection",line):
58+
elif "@collection" in line:
5759
new_db.write(line.replace("@collection","@book"))
58-
elif re.search("@thesis{Singhal2020",line):
60+
elif "@thesis{Singhal2020" in line:
5961
new_db.write(line.replace("@thesis","@mastersthesis"))
60-
elif re.search("@thesis",line):
62+
elif "@thesis" in line:
6163
new_db.write(line.replace("@thesis","@phdthesis"))
6264
else:
6365
new_db.write(line)

0 commit comments

Comments
 (0)