python - 删除属于另一个单词的单词
问题描述
假设我在 python 中有一个字符串列表,例如 -
lst = ['makeup brush tool', 'mak', 'flawless', 'tool', 'makeu', 'bru', 'brus', 'brush', 'makeup brush', 'cosmetic brush holder', 'elf makeup', 'key holder', 'holder', 'flaw', 'flawl', 'marinade brush', 'cosmetic', 'makeup brush cleaner', 'makeup brush holder', 'brush holder']
现在像“mak”这样的单个词是另一个词“makeu”的一部分。如何删除像“mak”这样的词。更多示例 - 出“bru”、“brus”和“brush” -> 必须删除“bru”和“brus”。
在此之后我无法继续 -
def remove_repeated_parts(un_corrected):
""" Returns a corrected list """
corrected = []
for word in un_corrected:
string_split = word.split()
if len(string_split) == 1:
# what to do from here
remove_repated_parts(lst)
预期产出 -
lst = ['makeup brush tool', 'flawless', 'tool', 'makeu', 'brush', 'makeup brush', 'cosmetic brush holder', 'elf makeup', 'key holder', 'holder', 'marinade brush', 'cosmetic', 'makeup brush cleaner', 'makeup brush holder', 'brush holder']
请注意,我们只考虑长度为 1 的字符串
与正则表达式有什么关系吗?
解决方案
你可以试试这个:(不使用正则表达式)
lst = ['makeup brush tool', 'mak', 'flawless', 'tool', 'makeu', 'bru', 'brus', 'brush', 'makeup brush', 'cosmetic brush holder', 'elf makeup', 'key holder', 'holder', 'flaw', 'flawl', 'marinade brush', 'cosmetic', 'makeup brush cleaner', 'makeup brush holder', 'brush holder']
def check_list(lists,l=[]):
for m in lists:
for n in lists:
if m in n:
l.append(n)
break
return l
print(check_list(lst))
推荐阅读
- python - Python:确保字符串是用户的有效输入,并拒绝任何其他输入
- swift - Swift Realm 结果转换为模型
- r - 生成多个邻接矩阵的更快方法
- docker - Datagrip DB 连接错误 - 无法从服务器读取响应。预期读取 4 个字节,在连接意外丢失之前读取 0 个字节
- amazon-web-services - 如何在没有域管理员帐户的情况下在 AWS Directory Service 上设置 AD FS?
- ios - 在 Swift 5 中检查 iOS 版本时的预期声明
- ruby - 我需要使用 hasrsine 函数返回两点之间的距离
- reactjs - 在功能组件中将回调作为道具传递时的反应性能问题
- javascript - 如何显示html页面(html代码存储在变量中)
- android-glide - 在 Android Studio 4.1 中找不到 GlideApp 符号