吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 963|回复: 11
收起左侧

[求助] 我需要从一个MDX库里面匹配我的单词表,补充音标。却老是不对,崩溃了。

  [复制链接]
52阳光灿烂 发表于 2023-8-23 13:48
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[word] = [meaning, phonetic]

# 打开单词表文件
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[0]
            # 调用函数,提取英式音标和美式音标
            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'

更换了很多个不同的库,都是说各种属性不对。请高手们帮我分析下原因。到底问题出在哪里呢?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

osmake 发表于 2023-8-23 14:23
用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[wordIndex_0]
        contt = BeautifulSoup(htmll, 'html.parser')
        return contt
    except Exception as e1:
        print(e1)

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
52阳光灿烂 + 2 + 1 用心讨论,共获提升!

查看全部评分

justfly99 发表于 2023-8-23 15:39
你可以看看我的帖子,直接调youdao的接口,给单词匹配发音和释义的,看符合你的要求的不,https://www.52pojie.cn/thread-1806917-1-1.html

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
52阳光灿烂 + 2 + 1 我很赞同!

查看全部评分

 楼主| 52阳光灿烂 发表于 2023-8-23 21:49
justfly99 发表于 2023-8-23 15:39
你可以看看我的帖子,直接调youdao的接口,给单词匹配发音和释义的,看符合你的要求的不,https://www.52po ...

你好。这个文章长度有限制吗?感觉稍微长一点,就一直在运行,几个小时都没反应。
 楼主| 52阳光灿烂 发表于 2023-8-23 21:54
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自己改,运行后还是如此。可否帮我深入分析下原因呢
justfly99 发表于 2023-8-23 22:18
52阳光灿烂 发表于 2023-8-23 21:49
你好。这个文章长度有限制吗?感觉稍微长一点,就一直在运行,几个小时都没反应。

我最多是试过几千个单词的,再多的没试过的。比较长的话会久点吧
 楼主| 52阳光灿烂 发表于 2023-8-23 22:55
本帖最后由 52阳光灿烂 于 2023-8-24 08:54 编辑
justfly99 发表于 2023-8-23 22:18
我最多是试过几千个单词的,再多的没试过的。比较长的话会久点吧

明白了,非常感谢帮忙。
 楼主| 52阳光灿烂 发表于 2023-8-24 08:51
eclipsa 发表于 2023-8-23 23:39
我查了pymdict库。这是一个类似小数据库的东西,初始化后可以存放数据,主要是支持查询之类的功能。

...

非常非常感谢,我就是个初学者,现在遇到好多坑。全靠你们这些楼上的热心高手们帮忙。
 楼主| 52阳光灿烂 发表于 2023-8-24 08:53
osmake 发表于 2023-8-23 14:23
用from readmdict import MDX 这个库,去csdn上找找教程
给你提供两个函数用于加载、解析和查询用的
def  ...

感谢大侠出手相助,茅塞顿开。
justfly99 发表于 2023-9-18 15:46
52阳光灿烂 发表于 2023-8-23 22:55
明白了,非常感谢帮忙。

我今天试了整本书那样的,百万多字肯定有的,抽取结果1万多单词,耗时大概是6分钟的,我的笔记本配置比较高点,11代I7+64G内存的。

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
52阳光灿烂 + 2 + 1 热心回复!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表