用python中的单个统一字符串替换类似字符串

2024-05-20 17:21:55 发布

您现在位置:Python中文网/ 问答频道 /正文

目前正在从事一个数据科学项目,我在数据准备方面遇到了麻烦

特别是这个:What's Cooking?

该数据集包含字符串,如“中等蛋”“大自由放养蛋”“茄子”“大蛋白”“中国鸡蛋面”鸡蛋

因此,在这种情况下,我想找到并替换所有的“中蛋”和“大自由放养蛋”,就像“蛋”,而像“茄子”“中国蛋面”这样的字符串应该被单独保留。我还需要将大蛋白替换为蛋白

另一个例子是“鹰嘴豆”和“鹰嘴豆”,因为它们指的是同一种成分

最初的尝试只是找到任何字符串中带有“egg”的字符串并替换它,但是因为有太多的条件,我不确定现在应该采取什么样的方法

由于这是一个分类项目,代码需要能够提取像“小鸡蛋”这样的潜在成分,并且仍然将其理解为“鸡蛋”


Tags: 数据项目字符串情况科学what鸡蛋例子
2条回答

作为部分解决方案,您可以使用以下方法编写一个简单函数:

import spacy

items = ['medium eggs', 'large free range egg', 'eggplants', 'large egg whites', 'chinese egg noodles', 'eggs']
clean = []
for i in items:
    doc = nlp(i)
    temp = ''
    for token in doc:
        #print(token.text , token.pos_)
        if token.pos_=='NOUN' or  token.pos_=='PROPN':
            temp += ' ' + token.text
    clean.append(temp)
print(clean)

输出:[' eggs', ' range egg', ' eggplants', ' egg whites', ' egg noodles', ' eggs']

注意:您可能需要手动处理一些案例,如“鹰嘴豆”和“鹰嘴豆”

这可以通过正则表达式最简洁地完成,检查查询字符串两侧的空格:

import re

def replace_eggs(string_to_replace, replacement_text, *query_strings):
  for query_string in query_strings:
    return re.sub(f"\s?{query_string}([\.,]?)\s?",replacement_text, string_to_replace)

警告:此代码非常糟糕。它不太好用,我没有足够的时间来修复它。我很抱歉。我建议学习regex和catch Group,这样做会更好。再重复一遍(巴敦青!),很抱歉,我有很多事情要做

相关问题 更多 >