我需要从一个MDX库里面匹配我的单词表,补充音标。却老是不对,崩溃了。
import pymdict# 创建mdx对象
mdx = pymdict.MDict()
# 读取mdx文件
with open("nj.mdx", "r", encoding="utf-8") as f:
for line in f:
# 解析每一行数据
data = line.strip().split("\t")
if len(data) == 3:
# 如果数据有效,则加入到mdx对象中
word, meaning, phonetic = data
mdx =
# 打开单词表文件
workbook = xlrd.open_workbook("words.xls")
# 创建一个新的工作簿,用于存放结果
new_workbook = xlwt.Workbook()
new_sheet = new_workbook.add_sheet("result")
# 定义一个函数,用于从mdx结果中提取音标
def extract_phonetic(result, flag):
# 根据flag参数,选择要提取的音标类型
if flag == "UK":
pattern = r"UK.*?>(.*?)<"
elif flag == "US":
pattern = r"US.*?>(.*?)<"
else:
return "N/A"
# 使用正则表达式匹配音标
match = re.search(pattern, result)
# 如果匹配到了音标,返回其内容,否则返回"N/A"
if match:
return match.group(1)
else:
return "N/A"
# 遍历单词表中的每一行
for i in range(workbook.nsheets):
sheet = workbook.sheet_by_index(i)
for j in range(sheet.nrows):
# 获取单词
word = sheet.cell_value(j, 0)
# 查询单词在mdx中的释义,返回一个列表
result = mdx.get(word, [])
# 如果查询到了结果,提取英式音标和美式音标
if result:
# 将结果转换为字符串
result = result
# 调用函数,提取英式音标和美式音标
uk_phonetic = extract_phonetic(result, "UK")
us_phonetic = extract_phonetic(result, "US")
else:
uk_phonetic = "N/A" # 如果没有查询到结果,返回"N/A"
us_phonetic = "N/A"
# 将单词和音标写入新的工作表中
new_sheet.write(j, 0, word)
new_sheet.write(j, 1, uk_phonetic)
new_sheet.write(j, 2, us_phonetic)
# 保存新的工作簿为result.xls
new_workbook.save("result.xls")
出错的信息如下:
Traceback (most recent call last):
File "G:\py\cdian\yinbiao.py", line 4, in <module>
mdx = pymdict.MDict()
^^^^^^^^^^^^^
AttributeError: module 'pymdict' has no attribute 'MDict'
更换了很多个不同的库,都是说各种属性不对。请高手们帮我分析下原因。到底问题出在哪里呢? 用from readmdict import MDX 这个库,去csdn上找找教程
给你提供两个函数用于加载、解析和查询用的
def mdx(md):
filename = md
headwords = [*MDX(filename)]# 单词名列表
items = [*MDX(filename).items()]# 释义html源码列表
if len(headwords) == len(items):
print(f'加载成功:共{len(headwords)}条')
else:
print(f'【ERROR】加载失败{len(headwords)},{len(items)}')
# 查词,返回单词和html文件
return headwords, items
def mdict(hhh, items, queryWord1):
try:
wordIndex_0 = hhh.index(queryWord1.encode())
wordd, htmll = items
contt = BeautifulSoup(htmll, 'html.parser')
return contt
except Exception as e1:
print(e1) 你可以看看我的帖子,直接调youdao的接口,给单词匹配发音和释义的,看符合你的要求的不,https://www.52pojie.cn/thread-1806917-1-1.html justfly99 发表于 2023-8-23 15:39
你可以看看我的帖子,直接调youdao的接口,给单词匹配发音和释义的,看符合你的要求的不,https://www.52po ...
你好。这个文章长度有限制吗?感觉稍微长一点,就一直在运行,几个小时都没反应。 eclipsa 发表于 2023-8-23 14:05
Traceback (most recent call last):
File "G:\py\cdian\yinbiao.py", line 4, in
mdx = pymdict. ...
我已经升级最新的了。另外,今天试了很多个类似的库,用了与该类对应的模块,全报这样的错,说属性不对。让AI帮忙排查,也一直不对。头疼得很。估计是跟我的配置有关,按道理不同的库,用了对应的模,报的错却全是一样的。让AI,帮查,它也让我各种改,或者AI自己改,运行后还是如此。可否帮我深入分析下原因呢 52阳光灿烂 发表于 2023-8-23 21:49
你好。这个文章长度有限制吗?感觉稍微长一点,就一直在运行,几个小时都没反应。
我最多是试过几千个单词的,再多的没试过的。比较长的话会久点吧 本帖最后由 52阳光灿烂 于 2023-8-24 08:54 编辑
justfly99 发表于 2023-8-23 22:18
我最多是试过几千个单词的,再多的没试过的。比较长的话会久点吧
明白了,非常感谢帮忙。 eclipsa 发表于 2023-8-23 23:39
我查了pymdict库。这是一个类似小数据库的东西,初始化后可以存放数据,主要是支持查询之类的功能。
...
非常非常感谢,我就是个初学者,现在遇到好多坑。全靠你们这些楼上的热心高手们帮忙。 osmake 发表于 2023-8-23 14:23
用from readmdict import MDX 这个库,去csdn上找找教程
给你提供两个函数用于加载、解析和查询用的
def...
感谢大侠出手相助,茅塞顿开。 52阳光灿烂 发表于 2023-8-23 22:55
明白了,非常感谢帮忙。
我今天试了整本书那样的,百万多字肯定有的,抽取结果1万多单词,耗时大概是6分钟的,我的笔记本配置比较高点,11代I7+64G内存的。
页:
[1]
2