首页 > 解决方案 > 检查字符串以获取特定格式的子字符串,如何..?

问题描述

两串。我的物品名称:

香水名称 EDT 50ml

和竞争对手的项目名称:

Parfume 别名 EDP 60ml

而且我有一列中有这些名称的长列表,另一列中有竞争对手的名称,我只想在数据框中留下那些行,无论这些字符串中的其他内容是什么,我和竞争对手的名称中都具有相同数量的 ml看起来像。那么如何在更大的字符串中找到以 'ml' 结尾的子字符串呢我可以简单地做

"**ml" in competitors_name

看看它们是否含有相同数量的毫升。

谢谢

更新

'ml' 并不总是在字符串的末尾。它可能看起来像这样

Parfume 又一个伟大的名字 60 毫升 EDP

标签: pythonregexstringcomparesubstring

解决方案


试试这个:

import re

def same_measurement(my_item, competitor_item, unit="ml"):
    matcher = re.compile(r".*?(\d+){}".format(unit))
    my_match = matcher.match(my_item)
    competitor_match = matcher.match(competitor_item)
    return my_match and competitor_match and my_match.group(1) == competitor_match.group(1)

my_item = "Parfume name EDT 50ml"
competitor_item = "Parfume another name EDP 50ml"
assert same_measurement(my_item, competitor_item)

my_item = "Parfume name EDT 50ml"
competitor_item = "Parfume another name EDP 60ml"
assert not same_measurement(my_item, competitor_item)

推荐阅读