程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

一種輔助整理WoS英文論文題錄文檔的方法(python-docx)

編輯:Python

在尋找選題的靈感時,通常需要閱讀大量論文。由於英語水平所限,閱讀英文速度不夠快,於是想到了一種輔助整理WoS英文論文題錄文檔的方法,從WoS導出標題、作者、來源、年份和摘要等信息,然後結合谷歌文檔翻譯和python-docx整理成Word文檔,用於快速浏覽論文主題、方法的分布,並快速定位到符合需求的高價值論文,最後再單獨下載這些論文仔細閱讀。

目錄

1. WoS導出Excel題錄

2. 機器翻譯

3. 基於python-docx的文檔生成與排版

4. 文檔輸出與整理

5. 不足之處與未來展望


1. WoS導出Excel題錄

首先在Web of Science中檢索文獻,然後選擇導出Excel格式。

 在彈出的框中選擇記錄x到x,如果少於1000條可以一次性導出;記錄內容選擇包含摘要的選項。

2. 機器翻譯

百度翻譯文檔需要會員,有道、WPS的文檔翻譯只支持Word、PPT、PDF等格式,不支持Excel表格。這裡使用谷歌翻譯Excel文檔。

由於谷歌翻譯只支持xlsx格式,需要先把xls重新保存成新的格式。

速度非常快,上傳後幾秒就可以下載譯文。

3. 基於python-docx的文檔生成與排版

把下載的譯文命名為'savedrecs譯文.xlsx',與原文件放在同一文件夾,使用Python程序整合兩個文件並排版生成Word。

# -*- coding: utf-8 -*-
import pandas as pd
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn
df = pd.merge(pd.read_excel('savedrecs.xlsx')[['Article Title', 'Authors', 'Source Title', 'Publication Year']], pd.read_excel('savedrecs譯文.xlsx')[['文章標題', '來源標題', '抽象的']], left_index=True, right_index=True)[['Article Title', '文章標題', 'Authors', '來源標題', 'Source Title', 'Publication Year', '抽象的']]
df.dropna(inplace=True)
document = Document()
document.styles['Normal'].font.size = Pt(12) # 字體大小
document.styles['Normal'].font.name = 'Times New Roman' # 西文字體
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋體') # 中文字體
document.styles['Normal'].paragraph_format.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY # 兩端對齊
document.styles['Normal'].paragraph_format.line_spacing = 1.15 # 行距
document.styles['Normal'].paragraph_format.space_before = Pt(3) # 段前
document.styles['Normal'].paragraph_format.space_after = Pt(3) # 斷後
document.styles['Normal'].paragraph_format.first_line_indent = document.styles['Normal'].font.size * 2 # 首行縮進
# 增加標題,可能由於版本問題直接改樣式不起作用,這裡使用h、r2個變量來調整標題格式,分別是paragraph和run格式
def add_heading_func(text, level, font_size, font_color=RGBColor(0, 0, 0), font_bold=True, line_spacing=1.15, first_line_indent=0, space_before=6, space_after=6, en_font='Times New Roman', cn_font='宋體'):
h = document.add_heading(level=level)
r = h.add_run(text)
r.font.size = Pt(font_size) # 字體大小
r.font.color.rgb = font_color # 字體顏色
r.font.bold = font_bold # 加粗
r.font.name = en_font # 西文字體
r._element.rPr.rFonts.set(qn('w:eastAsia'), cn_font) # 中文字體
if level == 0: # 如果為大標題,居中,西文字體同中文字體
h.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
r.font.name = cn_font
else: # 其他標題兩端對齊
h.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY
h.paragraph_format.first_line_indent = r.font.size * first_line_indent # 首行縮進
h.paragraph_format.line_spacing = line_spacing # 行距
h.paragraph_format.space_before = Pt(space_before) # 段前
h.paragraph_format.space_after = Pt(space_after) # 段後
add_heading_func('論文題錄整理', 0, 16, cn_font='微軟雅黑')
add_heading_func('一、分類標題1', 1, 12, cn_font='微軟雅黑', en_font='微軟雅黑', font_bold=False)
add_heading_func('(一)分類標題2', 2, 12)
for i in df.values: # 循環遍歷題錄表格
add_heading_func(i[1] + '('+ i[0] + ')(' + str(i[5]) + ')', 3, 12, font_color=RGBColor(0x4f, 0x81, 0xbd))
document.add_paragraph('來源:' + i[4] + '('+ i[3] + ')')
document.add_paragraph('作者:' + i[2])
document.add_paragraph(i[6])
document.add_paragraph()
document.save('論文題錄整理.docx') # 保存文件

4. 文檔輸出與整理

Python生成的Word文檔如下。

可將標題格式替換到樣式中,方便後續進一步分類整理與排版。

5. 不足之處與未來展望

1. 谷歌翻譯文檔存在少量單元格沒有被翻譯的情況,原因未知,還需要手動對譯文的文件進行一定的檢查和修正;未來考慮自動識別未被翻譯的內容,補充進行翻譯;

2. 可能由於版本原因標題樣式沒法直接設置,修改到styles['Heading 1']中的樣式不起作用,仍需少量的手工操作;

3. 分類整理目前全為手動,未來可考慮結合TextRank、LDA等算法輔助歸類。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved