python - 将连续重复的字符串转换为已知单词
问题描述
我正在尝试将具有连续重复字符的字符串转换为它的“字典”单词。例如,“aaawwesome”应转换为“awesome”。
我遇到的大多数答案要么删除了所有重复项(例如,“站”将转换为“站”),或者使用 删除了所有连续的重复项itertools.groupby()
,但这不考虑诸如“快乐”之类的情况将转换为“快乐”。
我也尝试过使用与 的字符串交集Counter()
,但是这忽略了字母的顺序,因此 'botaniser' 和 'baritones' 会不正确地匹配。
在我的具体情况下,我有一些单词列表:
list_1 = ["wife", "kid", "hello"]
list_2 = ["husband", "child", "goodbye"]
并且,给定一个新单词,例如“hello”,我想检查它是否可以简化为任何单词,如果可以,将其替换为该单词。
解决方案
使用附魔模块,您可能需要使用 pip 安装它
查看哪些字母重复,从单词中删除该字母,直到该单词出现在英语词典中。
import enchant
d = enchant.Dict("en_US")
list_1 = ["wiffe", "kidd", "helllo"]
def dup(x):
for n,j in enumerate(x):
y = [g for g,m in enumerate(x) if m==j]
for h in y:
if len(y)>1 and not d.check(x) :
x = x[:h] + x[h+1:]
return x
list_1 = list(map(dup,list_1))
print(list_1)
>>> ['wife', 'kid', 'hello']
推荐阅读
- sql - 如何编写查询以产生所需的结果?
- jekyll - 如何使用 jekyll-archive 获取 Jekyll 类别的博客列表
- java - 如何从文本文档中提取信息然后打印出来
- ruby - 在 ruby 中将文件名作为参数传递
- python - 如何处理 Django 中的错误
- python - 如何下载具有授权的文件 - python
- windows - 如何在命令提示符下合并两个 cmd 命令?
- asp.net-core - 在部分视图中传递给表单的模型返回组件(在调用表单之前不为空)在表单发布到控制器时为空
- node.js - 使用 cloudbuild.yaml 部署 Google Cloud 函数(Node JS)时出错
- javascript - 在 jQuery UI 组合框中禁用分隔符