错误:该位置没有任何可重复的内容

2023-12-02

我有一个文本文件,其中包含俚语及其用真正的英语替代的列表。我使用“:”作为分割点将此文本文件转换为字典,并且在转换后打印字典时一切似乎都正常。

但是,源自此行的错误:slangs_re = re.compile('|'.join(slang_dict.keys())) says nothing to repeat at position 112207.

在尝试调试时,我发现该错误以某种方式与字典相关。这是因为当我运行下面的代码时,我没有得到正确的输出,但也没有得到错误。此代码的预期输出是“fitness”,但实际输出是“fitess”。

import re

test = "fitess"

slang_dict = {"fitess":"fitness", "damm":"damn"}

slangs_re = re.compile('|'.join(slang_dict.keys()))

def correct_slang(s, slang_dict=slang_dict):
    def replace(match):
        return slang_dict[match.group(0)]

    return slangs_re.sub(replace, s)

test = correct_slang(test)
print(test)

这是带有字典的代码(抱歉,文本文件太大,无法包含在内。示例可用here)。预期输出是“fitness”,但实际输出是错误:

import re

test = "fitess"

file = open("slang_conversion.txt","r")

slang_dict = {}

for line in file:
    x = line.split(":")
    a = x[0]
    b = x[1]
    c = len(b) - 1

    b = b[0:c]

    slang_dict[a] = b

slangs_re = re.compile('|'.join(slang_dict.keys())) # <-- error

def correct_slang(s, slang_dict=slang_dict):
    def replace(match):
        return slang_dict[match.group(0)]

    return slangs_re.sub(replace, s)

test = correct_slang(test)

print(test)

在阅读其他 SO 线程后,我发现在某些情况下这是一个错误,但在这种情况下似乎不是一个错误。

谢谢


我建议更换

slangs_re = re.compile('|'.join(slang_dict.keys()))

with

slangs_re = re.compile(r"(?<!\w)(?:{})(?!\w)".format('|'.join([re.escape(x) for x in slang_dict])))

并确保传递按长度降序排列的键。

from collections import OrderedDict
import re

test = "fitess no kome*"

slang_dict = {"Aha aha":"no", "fitess":"fitness", "damm":"damn", "kome*":"come", "ow wow":"rrf"}
slang_dict = OrderedDict(sorted(slang_dict.iteritems(), key=lambda x: len(x[0]), reverse=True))

slangs_re = re.compile(r"(?<!\w)(?:{})(?!\w)".format('|'.join([re.escape(x) for x in slang_dict])))
def correct_slang(s, slang_dict=slang_dict):
    def replace(match):
        return slang_dict[match.group(0)]

    return slangs_re.sub(replace, s)

test = correct_slang(test)
print(test)

See the Python演示

这会将术语作为整个单词进行检查,并转义每个搜索短语中的特殊字符,以便将它们传递到正则表达式引擎时不会出现问题。

如果您对全字匹配不感兴趣,请删除(?<!\w)(检查前导词边界)和(?!\w)(检查尾随字边界)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:该位置没有任何可重复的内容 的相关文章

随机推荐

  • 我们可以在哪里放置 crossdomain.xml

    您好 我已在应用程序 http myserver 11090 apps 上部署了我的 Flex 应用程序 并使用重定向到应用程序服务器的代理服务器 Web 服务器 https mysite site com 但在运行时应用程序在位置 htt
  • SQLite3 错误 - iOS

    当我进行 SQL 调用时 如何找出 SQLite3 给我的错误 int success sqlite3 prepare v2 database sql 1 stmt NULL if success SQLITE OK NSLog creat
  • 没有 fill_diagonal 的 inf 的 Python 矩阵对角线

    我需要将矩阵的对角线元素设置为 Inf 一个简单的方法是使用np fill diagonal np fill diagonal my matrix float inf However fill diagonal修改输入矩阵 而不是返回填充对
  • 想要删除 Browser.sleep()

    大家好 我正在使用量角器来测试非角度网站 最初在测试时我有browser sleep 这样页面就可以完全加载 我知道添加 browser sleep 不是一个好的测试方法 因此想从代码中删除它 我尝试了 browser wait 但出现错误
  • 匹配第 n 次出现(排除最后一次出现)

    我有一个关于正则表达式的问题 我不知道为什么我不能执行以下操作 例句 This is a test string with five t s 我使用的正则表达式 t 3 我希望正则表达式匹配以下内容 This is a test s 但它不
  • 如何在列中打印嵌套的Python列表

    我有一个程序 它生成一个Python列表作为其输出 该列表是一个嵌套列表 列表 名称 地址 电话号码 的列表 我希望能够以柱状格式打印 似乎在陈述问题时是一个非常简单的想法 但我一直无法找到一种简单的方法来从列表中提取数据 如果我打印 列表
  • 检查套件完成后如何触发 Github 工作流程?

    我只想在特定工作流程完成时触发工作流程 有人知道该怎么做吗 一些背景 我有一个工作流程Tests另一个叫Build feature 我运行我的Tests每个 PR 到分支的工作流程feature 如果某些内容被推送 合并到分支feature
  • 几个 catch 块还是一个带有dynamic_cast 的catch 块?

    我们有一个异常类的层次结构 有一个GenericException类以及从它派生的许多类 GenericException是多态的 它有一个虚拟析构函数 派生类之一是FileException抛出以指示操作文件系统对象时出现错误 FileE
  • PHP 中“&$var”中的“&”是什么意思? [复制]

    这个问题在这里已经有答案了 什么是 意思是在 var in PHP 有人可以帮我进一步解释一下吗 先感谢您 这意味着传递变量参考 而不是传递变量的值 这意味着当程序流返回到调用代码时 对 preparse tags 函数中该参数的任何更改都
  • 使用react-router的history.push()和自定义URL参数

    我正在尝试创建一个用户可以加入群组的应用程序 我拥有的页面之一是群组仪表板 为此 我创建了一个 URL 参数为 id 的路由
  • 禁止带有 `static_assert` 的函数

    我想阻止某些函数被调用 让我们忽略通过函数指针或其他东西调用函数的情况 只关注直接函数调用的情况 我可以这样做 delete 然而 发布的诊断信息并不丰富 我考虑过使用static assert 您可以使用它提供自定义诊断消息 我放置了一个
  • 将二维数组(字符串)存储到文件并检索它

    我制作了一个简单的程序 其中有一个存储大量数据的 2D 字符串数组 我搜索了很多地方来了解如何存储和检索二维数组 我想在程序结束时将数据保存在数组中 并在程序启动时检索该数据 我努力了 ObjectOutputStream toFile n
  • 如何将 java.lang.String 的空白 JSON 字符串值反序列化为 null?

    我正在尝试将一个简单的 JSON 反序列化为 java 对象 然而我却变得空虚String值java lang String属性值 在其余属性中 空白值将转换为null值 这就是我想要的 下面列出了我的 JSON 和相关的 Java 类 J
  • 从 python 中的标签名称中抓取数据

    您好 我正在尝试从网站上抓取用户数据 我需要用户 ID 该 ID 可在标签名称本身中找到 我正在尝试使用 python selenium 和 beautiful soup 中的 UID 来抓取div tag Example lt div i
  • 使用 Android 本机应用程序中的 ADAL 库对 Azure AD 上的用户进行身份验证

    我们有一个要求 用户应该从本机应用程序 Android iOS 登录 而不从应用程序调用 Microsoft 登录 Web 视图窗口 我们有示例代码 演示使用 net 控制台应用程序中的用户名和密码对 Azure AD 进行非交互式身份验证
  • FreeSwitch + Mode Verto + Webrtc + Android + 无法从 android 拨打电话

    我做了一个mode verto安卓客户端 使用WebRtc 预建库 org webrtc google webrtc 1 0 libjingle io pristine libjingle 11139 aar and 自由切换但只成功进行单
  • 启动 JavaFX 应用程序时的内部 NPE

    所以基本上我开始了一个虚拟的 JavaFX 项目 只是为了为我的实际问题实现一个简约的示例 但现在我什至无法再运行那个简约的项目 也没有收到足够的错误信息来自己用谷歌搜索出来 所以现在 当我运行代码时 我收到给定的错误堆栈 这不会引导我到任
  • Biztalk 和调用 Web 服务的最佳方式

    我正在编写一个 biztalk 编排 需要调用一个 Web 服务 可能是多个 Web 服务 而且可能不止一次 我面前有两个选择 一 在单独的代码项目中使用 wsdl 并从表达式形状的代码中调用 Web 服务 二 从 Biz 使用它 获取架构
  • 无法在 MySQL 中获得正确的编码

    一段时间以来 我一直在努力解决 MySQL 中的编码问题 我正在建立一个数据库 其中不仅包含拉丁文 还包含西里尔文和阿拉伯文文本 这是我如何创建数据库的示例 CREATE DATABASE db1 DEFAULT CHARACTER SET
  • 错误:该位置没有任何可重复的内容

    我有一个文本文件 其中包含俚语及其用真正的英语替代的列表 我使用 作为分割点将此文本文件转换为字典 并且在转换后打印字典时一切似乎都正常 但是 源自此行的错误 slangs re re compile join slang dict key