我的Excel数据很简单,就两列,互相对应的单词列和翻译列,想实现在mdict搜单词就出现其对应的翻译。手机电脑上用Excel查看感觉都有点麻烦,看到mdict后发现这种程序简直绝了,大佬求教
现在可以直接让AI写个程序处理
里面的词典制作工具备份有一个:
01 Exce表格转TXT文本工具ExcelToTxtP
我没用过,你可以试试看。
其实你应该把含有数据样本(5-10行)的xls传上来。
按照你的描述,我猜想用公式就可以解决。
例句有人做过mdx的。
列数不多的话,拷贝到txt文件,文件编码选择UTF-8,得到:
单词列1|<-制表符->|翻译列1
单词列2|<-制表符->|翻译列2
要编译为MDX,则需要编译前的txt文件格式为:
单词列1
翻译列1
</>
单词列2
翻译列2
</>
为此需要把|<-制表符->|替换为换行符并在翻译列的下一行加上</>
这个在支持正则表达式的文本编辑器即可实现,可以问大模型具体方法。
当然,如果你在单词列或翻译列可能使用了制表符,那可以先在Excel中加入一列独特的字符串来隔开单词列或翻译列,然后再继续后续步骤
excel另存为tsv,文本编辑器(不能是windows默认的记事本,随便找一个支持正则的都行)打开tsv,正则搜索替换$为\n</>,替换\t为\n,mdxbuilder打包,好了。
已经是最简单的步骤了,全过程就五分钟,还不会的话可以放弃学习制作mdx了。
tsv吗,另存找不到这个格式哎
记错了,那就导出csv吧
这一步改为替换, 为\n,这个就怕有的词头里有逗号。我记得导出csv的间隔符号也能自定义,好久没用过excel了。
词头就我这第一列吗,这都是纯单词,空格和任何符号都没有
没听懂你要说什么
假如你是用Windows 10的,用Emeditor创建一个新的文本,在Excel里Select all,copy,在Emeditorl里paste。
tab会跟着过去的。
接下来可以跟着amob的方法做。
直接让chatgpt写了个python文件,把xlsx和mdx名字换成你的,下载python
运行pip install openpyxl pymdict
然后运行脚本就好了
from openpyxl import load_workbook
from pymdict import MDXWriter # pip install pymdict
# 1. 读取 Excel 文件
excel_path = "your_file.xlsx" # 你的 Excel 文件路径
wb = load_workbook(excel_path, read_only=True)
ws = wb.active # 取第一个工作表
# 2. 提取 A列和C列数据
entries = []
for row in ws.iter_rows(min_row=2): # 从第2行开始,跳过表头
word = row[0].value # A列
definition = row[2].value # C列
if word and definition:
entries.append((str(word).strip(), str(definition).strip()))
# 3. 生成 MDX
mdx_path = "output.mdx"
writer = MDXWriter(
title="我的词典",
description="从Excel生成的mdict词典",
encoding="UTF-8"
)
for headword, body in entries:
writer.add_entry(headword, body)
writer.write(mdx_path)
print(f"✅ 转换完成,文件已保存为: {mdx_path}")
excel保存成txt就是制表符分隔的
我还是拙劣,用emeditor打开了csv,替换这一步是ctrl+f替换输入$吗
ctrl+h打开替换框,勾选正则表达式,输入$替换为\n</>,
然后将你词语和内容之间杂七杂八的所有内容替换为\n。
我把空的B列在csv里去掉了,下一步接着空白替换/n吗
不管怎么样,一行词语一行内容,你做到这样就行了。\n是换行的意思。
你只贴图让人看,别人是很难指导你的。
我总是说:贴数据样本,贴样本,……
说了半天,还是贴个图。
你按上面各位指点的办法做,能编辑成下面的样子就完成了,必须是文本文件,回车换行符必须是Windows格式(\r\n),最后就可以转换为mdx了。
gene
n 基因
</>
terminate
v 终止
</>
digest
v 消化
</>
leather
n 皮革
</>
curious
adj 好奇
</>
parasite
n 寄生虫
</>
video
n 视频
</>
impact
n 冲击
</>
extravagant
adj 奢侈
</>
burden
n 负担
</>