将 bib 文件里面的姓名格式化为简写

最近写文章的时候需要将 bib 文件里面的姓名全都改成简写,引用太多,手工操作太烦。

真,懒才是第一生产力。

分析一下:首先通过 and 将现有的姓名全部断开,然后对于每个姓名,按空格断开。第一个全部保留;其余的只保留第一个字母并改成大写。

很简单…… 很简单。但是为啥有人喜欢用「A.-B.」这样的形式啊!不开心。


好吧好吧,代码在这里了。

def process_name(name):
    names=[]
    for nm in [x.strip() for x in name.split()]:
        if '-' in nm:
            tmp = [x.strip() for x in nm.split('-')]
            tmp = [x[0]+"." for x in tmp]
            names.append("-".join(tmp))
        else:
            names.append(nm[0]+".")
    return " ".join(names)

def process_authors(data):
    data = [x.strip() for x in data.split(" and")]
    data_out=[]
    for name in data:
        first_name, *last_name = name.split(",")
        last_name = [x.strip() for x in last_name]
        last_name = [process_name(x) for x in last_name]
        data_out.append("{}, {}".format(first_name, ", ".join(last_name)))
    return " and ".join(data_out)

while True:
    data=input()
    print()
    print(process_authors(data))
    print()

如果要是能改成直接读 bib 文件的话就更好了。——这才是真懒

留下评论