我很难解决以下问题;
有一个包含问题和答案的 word 文件,我需要以特定格式导入 moodle(在线问题网站)。一切都是黑色的接受正确的答案,这些是绿色的。开始格式如下:
1. Question example
a. Wrong
b. Wrong
C. Wrong
D. Right
输出应该变成
:Question example
:Question example
{
~ Wrong
~ Wrong
~ Wrong
= Right
}
我在 word 中打开文件,用 * 替换所有红色段落标记(我不能用组替换)。之后,我将 .docx 文件导出为文本。在我的 linux 计算机上打开并在其上抛出以下正则表达式。
sed -i -e 's/^\r/\n/g' tmp #OS X white line replacement
sed -i -e 's/\r//g' tmp #remove white lines
sed -i -e 's:^[a-z]\.:~:' tmp #Replace Leading question letters with tilde
sed -i -e 's/\(^[0-9]*\.\ \)\(.*\)/}\n::\2\n::\2\n{/' tmp #regenerate tittle
sed -i -n '${p;q};N;/\n\*/{s/"\?\n//p;b};P;D' tmp #next line starts with * append to front of current
sed -i -e 's:^~\(.*\)\(\*.*\)$:=\1:' tmp #move * from back to = to front
sed -i -e 's:^\*:=:' tmp #replace any remaining * with =
sed '/^$/d' tmp #delete any remaining white lines
这不是很好,但效果很好,问题是手工制作的并且有很多错误,所以我仍然必须手动完成。困难的部分是当我有多个正确答案时。输出应如下所示;
:Question example
:Question example
{
~%-100% Wrong
~%-100% Wrong
~%50% Right
~%50% Right
}
理想情况下,我有一个 sed 或 perl 正则表达式,它计算 { 之间的 = 唱数,并用 ~%50% 替换它们。所有的 ~ 都以 %-100% 的比例唱歌。我也可以将这段代码用于 3 个正确答案,其中每个正确答案都变为 ~%33%。
这是可行的吗?我有超过 1000 个问题,它肯定有助于自动化。用 sed 进行多行替换对于两行来说有点棘手,所以我猜四行或更多行需要 perl?我没有使用 Perl 的经验。
有人可以帮我解决这个问题吗?请原谅我的英语不好,我是非母语人士。