docmd.outputto acoutputtable 导出为记事本_将德语助手(桌面版)单词本导出为excel表格...

excel表格是背单词的好工具,尤其是对于我这种懒得用手的人

德语助手自带了导出单词本的工具,但导出的格式只有xml(我不知道是啥玩应儿),html(网页格式),和txt(记事本),显然都不是我想要的。

11a1d045917361b344a4f23f328d54f8.png
德语助手桌面版的单词本导出

最近刚好学了点python爬虫相关的东西,于是决定应用一下。

选择导出格式为html,导出简单解释。

592ece7a6c20cf5fe4d5a4190724e536.png
选择导出简单解释

然后就获得了一个html文件

6e89c244027d8a1d1c569a3aa3d3a574.png

然后打开网页右键选择查看源代码

b7822e8325659b52e8f53ef5bb32a8c9.png

提取分三个部分进行。首先每一行的单词数据通过<tr>与</tr>分隔,先通过正则表达式提取他们

pat1 = '<tr>([Ss]*?)</tr>'

提取之后出现两种结果

第一个是首行用于描述每列内容类型的

ee02d6d639e91047fbef6b1cc9a6b590.png

由于我懒所以选择直接提取他们并写入表格中

(注意这里正则表达式匹配到的第一个内容为'#',后面在批量写入表格文件前需要将其修改为'0'以表示第一行的第一列)

pat3 = '<th class=".*?">(.*?)</th>'

第二个是单词行

1ba8527f4639504ab90832b0396c3f00.png

包含了单词的音标、释义等信息

pat2 = ’<td class="export-td">([Ss]*?)</td>'

然后获取了以上信息之后就可以得到每行每列内容的列表,稍作修改就可以用了

下面是完整代码

import xlwt
import re

path = "2.html"
pat1 = '<tr>([Ss]*?)</tr>'
pat2 = '<td class="export-td">([Ss]*?)</td>'
pat3 = '<th class=".*?">(.*?)</th>'

file = open(path, 'r', encoding='utf-8')
output = open('contain.txt', 'w', encoding='utf-8')
exl = xlwt.Workbook()
sh1 = exl.add_sheet('Fuck Deutschland')

data = file.read()
al = re.compile(pat1).findall(data)
sp = []

for i in range(len(al)):
    if not i:
        a = re.compile(pat3).findall(al[i])
        a[0] = '0'
        sp.append(a)
    else:
        a = re.compile(pat2).findall(al[i])
        sp.append(a)

    for j in range(len(sp[i])):
        x, y = int(sp[i][0]), j
        sh1.write(x, y, sp[i][j])

exl.save('output.xls')
output.close()
file.close()

print("OVER")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值