作法是這樣的(最近發現作什麼東西,一定要寫起來,不然好容易忘記)
把doc、odt這些題目檔的文字複製出來以後,先把每題開頭的題號刪掉(用regex ^\d{1,2}.\s)
(A)(B)(C)(D)用取代的方式換成tab,再把這些貼到google試算表,格式如下:
第一欄是學年度、第二欄是答案、第三欄是有沒有圖片(有的話就是1,沒有就是0),有圖片的之後進moodle要再補,第四欄以後就是題幹和四個選項
整理好之後,再把題目用csv檔格式儲存
接著就是用python把csv檔變成能匯入moodle的gift格式,使用的程式是python 2.x版本的
# -*- coding: utf8 -*-
#year columns[0]
#answer columns[1]
#picture columns[2]
#stem columns[3]
#A columns[4]
#B columns[5]
#C columns[6]
#D columns[7]
#using python 2.x
crs = open("combineTest", "r")
for columns in ( raw.strip().split() for raw in crs ):
#印出單選題題庫分類
if columns[2]=="0":
print "$CATEGORY: "+"生物/段考/A1/"+columns[0]
if columns[2]=="1":
print "$CATEGORY: "+"生物/段考/A1/"+columns[0]+"/圖"
#列印試題名稱
print "::"+columns[3]+"/"+columns[4]+"/"+columns[5]+"/"+columns[6]+"/"+columns[7]+"::"
#印出題幹
print columns[3]+"{"
if columns[1]=="A":
print "="+columns[4]
else:
print "~"+columns[4]
if columns[1]=="B":
print "="+columns[5]
else:
print "~"+columns[5]
if columns[1]=="C":
print "="+columns[6]
else:
print "~"+columns[6]
if columns[1]=="D":
print "="+columns[7]
else:
print "~"+columns[7]
print "}"
===2018.5.22更新
最近改用python3,所以修改程式如下
import csv
with open('bigtest.csv') as f:
rows = csv.reader(f)
for row in rows:
#印出單選題題庫分類
if row[2]=="0":
print("$CATEGORY: "+"生物/段考/A1/"+row[0])
if row[2]=="1":
print("$CATEGORY: "+"生物/段考/A1/"+row[0]+"/圖")
#列印試題名稱
print()
print( "::"+row[3]+"/"+row[4]+"/"+row[5]+"/"+row[6]+"/"+row[7]+"::")
#印出題幹
print( row[3]+"{")
if row[1]=="A":
print( "="+row[4])
else:
print( "~"+row[4])
if row[1]=="B":
print( "="+row[5])
else:
print( "~"+row[5])
if row[1]=="C":
print( "="+row[6])
else:
print( "~"+row[6])
if row[1]=="D":
print( "="+row[7])
else:
print( "~"+row[7])
print( "}")
print()