You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Pyenchant拼写检查:如何同时输出错误单词与原字符串

解决拼写检查关联原字符串与错误单词的问题

要实现原字符串和错误单词的对应输出,核心是要把每个待检查的字符串和它的拼写错误一一绑定——你之前的问题大概率是没把检查器和单个字符串做关联,导致无法正确获取对应的原文本。

直接给你调整后的代码思路和示例:

核心实现步骤

  • 遍历你的字符串列表(或DataFrame中的文本列),逐个处理每个原字符串
  • 对每个字符串,重新给SpellChecker设置待检查文本
  • 遍历当前字符串的所有拼写错误,输出时直接用当前循环的原字符串搭配错误单词

示例代码

针对字符串列表的基础版本

from enchant.checker import SpellChecker

# 替换成你的字符串列表
text_list = ["这是一个拼写错误的字符串", "I love pyton", "Hello wrld"]
# 注意语言参数:中文用zh_CN,英文用en_US,根据你的需求调整
spell_checker = SpellChecker("zh_CN")

for original_text in text_list:
    # 给检查器设置当前要检查的原字符串
    spell_checker.set_text(original_text)
    # 遍历当前字符串的所有拼写错误
    for error in spell_checker:
        # 按照你想要的格式输出
        print(f'"{original_text}" : {error.word}')

针对你代码里的数据库/场景版本

如果你的文本是从数据库读取到DataFrame中的,只要遍历DataFrame的文本列即可:

from enchant.checker import SpellChecker
import pypyodbc as db
import pandas as pd

pd.set_option('max_rows', 10000)

# 假设你已经从数据库读取到了DataFrame,比如叫df,文本列名为content
# (这里省略数据库连接和读取的代码,你可以保留自己的逻辑)
spell_checker = SpellChecker("zh_CN")

for _, row in df.iterrows():
    original_text = row['content']
    spell_checker.set_text(original_text)
    for error in spell_checker:
        print(f'"{original_text}" : {error.word}')

为什么你之前的方法不对?

你用chkr.get_text()的时候,如果没有逐个给检查器设置单个字符串,它返回的可能是所有检查过的文本的拼接,或者是当前检查器缓存的最后一段文本,自然无法和单个错误对应上。而通过循环逐个绑定原字符串+检查器,就能精准关联每个错误所属的原文本了。

内容的提问来源于stack exchange,提问作者Tayyab Amin

火山引擎 最新活动