python - 检查字符串以获取特定格式的子字符串,如何..?
问题描述
两串。我的物品名称:
香水名称 EDT 50ml
和竞争对手的项目名称:
Parfume 别名 EDP 60ml
而且我有一列中有这些名称的长列表,另一列中有竞争对手的名称,我只想在数据框中留下那些行,无论这些字符串中的其他内容是什么,我和竞争对手的名称中都具有相同数量的 ml看起来像。那么如何在更大的字符串中找到以 'ml' 结尾的子字符串呢?我可以简单地做
"**ml" in competitors_name
看看它们是否含有相同数量的毫升。
谢谢
更新
'ml' 并不总是在字符串的末尾。它可能看起来像这样
Parfume 又一个伟大的名字 60 毫升 EDP
解决方案
试试这个:
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)