英语阅读这门课要考单词,为了方便整理生词折腾了一套比较自动化的workflow。
- 整理生词
为了省去一个一个查单词的麻烦,用 Python 写了一个小脚本,调用别人做好的必应词典API,然后把查字典查到的结果写到csv里。
之后就可以把csv导入到表格处理软件里了。我这里用的是Numbers,直接把csv文件拖进去就好了。用Microsoft Excel的话,在Windows上应该可以直接打开,在macOS下需要从”数据”->”从文件”并选择UTF-8编码手动导入。
效果如图:
- 背单词
这里使用了Numbers叫做“条件高亮显示”的功能,在Microsoft Excel里也有相应的功能。在设置好下面两条规则之后就可以做到高亮没写的单词、标红没拼对的单词了。
只要隐藏相应的列就可以自己考自己单词了!
- Future work
这里立个flag,等考完试有空了把这个东西写成Web App让大家都能用。
期末加油!
附源码
#!/usr/bin/env python3
import csv
import re
import requests
import argparse
def main(args):
with open(args.input, 'r') as in_list, open(args.output, 'w') as out:
writer = csv.writer(out)
words_lines = [x.strip() for x in in_list.readlines()]
words = []
for line in words_lines:
for w in line.split(' '):
words.append(w.strip())
for w in words:
request_data = {
'Action': 'search',
'Word': w,
'Format': 'jsonwv'
}
try:
r = requests.post('http://xtk.azurewebsites.net/BingService.aspx', data=request_data).json()
meaning = []
for k in r.keys():
if k.startswith('mn'):
idx = re.match('mn(\d+)', k).group(1)
meaning.append("{} {}".format(r['pos'+idx], r[k]))
if len(meaning) > 0:
amep = r.get('amep', '').replace("æ", "æ")
brep = r.get('brep', '').replace("æ", "æ")
writer.writerow([w, amep, brep, ' '.join(meaning)])
except:
pass
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='take word list, output dictionary')
parser.add_argument('--input')
parser.add_argument('--output')
args = parser.parse_args()
if args.input is None or args.output is None:
print('You must provide input and output.')
exit()
main(args)