论文自动写作之自动添加参考文献

本文介绍了一种利用脚注自动生成参考文献的方法,通过将Word文档转换为HTML,使用XPath提取脚注信息,并借助python-docx库将脚注内容自动添加到文档的参考文献部分,从而实现论文写作过程的自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、成果展示

在这里插入图片描述

二、简介

这是我试图将论文写作进行自动化处理的一个记录,这是开始的第一篇,根据已经写好的脚注进行参考文献的添加,使得自己不用一个一个的复制脚注到参考文献中去。在设想中不仅进行论文格式处理,如参考文献的自动添加、标题与正文字号的批量处理、脚注自动添加等形式上的问题,可能更进一步涉及实质内容例如提供词向量对可能导致文章重复率计算的的词语替换乃至使用GPT-2,GPT-3自动化写作

三、实现过程

通过脚注生成参考文献

(一)mammoth包将docx转为html

python-docx包中没有发现可以读取脚注的方法,而在csdn中也没有找到,关于脚注的提取大多都是将docx文件转为html后进行提取的,因而我也是采取这种路径
mammoth可以将docx转为html即
在这里插入图片描述

转化过程为:

import mammoth
    def docx_html(input):
    """这是由于脚注无法读取"""
    """转为html"""
    with open(input, "rb") as docx_file:
        result = mammoth.convert_to_html(docx_file)
        html = result.value  # The generated HTML
        temp = self.input.split(".")[0]+".html"
        with open(temp, "a")as f:
            f.write(html)
    return temp

return temp 返回的是转化后的html的路径

(二)使用xpath提取

这里比较简单,导入lxml,然后进行xpath提取即可

temp = docx_html(input)
parser = etree.HTMLParser(encoding="gbk")
text = etree.parse(temp, parser=parser)
content = text.xpath("/html/body/ol[10]//text()")
#print(content)
references = []
for i in content:
	if i == "↑" or "说明:" in i:
    	pass
    else:
        try:
        	text = i.split(";")
            for i in text:
            	references.append(i.replace("参见",""))
        except:
            references.append(i.replace("参见", ""))

这里的提取信息的标签会因为文章的长度而不同,需要自行调整;而需要剔除的内容也会由于每个人的写作习惯不同而需要调整

(三)python-docx将脚注写入参考文献

#写入docx
    document = docx.Document(self.input)
    docText2 = [paragraph.text for paragraph in document.paragraphs]
    p = document.paragraphs[len(docText2)-1]
    #document.add_page_break()  # 另起一页
    p.add_run("\n")
    p.add_run("参考文献\n")
    for i,text in enumerate(references):
        i = i+1
        p.add_run("[%d]"%i+text+"\n")
    document.save(self.input)

这里有个不太完善的地方就是“参考文献”无法使用add_heading的方法插入,只能以段落文本的方式插入,这导致参考文献需要自行调整字号以及加粗

(四)完整的代码

class Reference_Find():
def __init__(self,input):
    self.input = input



def docx_html(self):
    """这是由于脚注无法读取"""
    """转为html"""
    with open(self.input, "rb") as docx_file:
        result = mammoth.convert_to_html(docx_file)
        html = result.value  # The generated HTML
        #messages = result.messages  # Any messages, such as warnings during conversion
        temp = self.input.split(".")[0]+".html"
        with open(temp, "a")as f:
            f.write(html)
    return temp


def references_write_to_docx(self):
    """首先提取脚注,然后写入"""
    temp = self.docx_html()
    print(temp)
    parser = etree.HTMLParser(encoding="gbk")
    text = etree.parse(temp, parser=parser)
    content = text.xpath("/html/body/ol[10]//text()")
    #print(content)
    references = []
    for i in content:
        if i == "↑" or "说明:" in i:
            pass
        else:
            try:
                text = i.split(";")
                for i in text:
                    references.append(i.replace("参见",""))
            except:
                references.append(i.replace("参见", ""))
    #写入docx
    document = docx.Document(self.input)
    docText2 = [paragraph.text for paragraph in document.paragraphs]
    p = document.paragraphs[len(docText2)-1]
    #document.add_page_break()  # 另起一页
    p.add_run("\n")
    p.add_run("参考文献\n")
    for i,text in enumerate(references):
        i = i+1
        p.add_run("[%d]"%i+text+"\n")
    document.save(self.input)

项目地址 参考文献自动添加.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值