我有一个列表input
:
['ICE ERIE', 'ERIE', 'o9 ManGo', 'ManGo SLACKCURRAN 120mL', 'SLACKCURRAN']
如何从中提取以下字符串:
'ManGo SLACKCURRAN 120mL'
另一个例子:
Input
:
['SWANSON', 'Apple Cider Vinegar Food Supplement Supplement mg per tablet DOUBLE STRENGTH FORMULA per tablet 1 NET', 'Cider', 'Vinegar', 'Food Supplement DOUBLE', 'Supplement', '200', 'per', 'tablet', 'DOUBLE', 'TABLETS 1 NET WEIGHT: 62g', '1', 'NET', 'WEIGHT:']
Output
:
'TABLETS 1 NET WEIGHT: 62g'
我的尝试:
import re
l = []
for each in input:
elif re.match('^\d+\.?\d*(ounce|fl oz|foot|sq ft|pound|gram|inch|sq in|mL)$',each.lower()):
l.append(each)
else:
pass
您可以使用
import re
input_l = ['ICE ERIE', 'ERIE', 'o9 ManGo', 'ManGo SLACKCURRAN 120mL', 'SLACKCURRAN']
reg = re.compile(r'd*.?d+s*(?:ounce|fl oz|foot|sq ft|pound|gram|inch|sq in|ml)b', re.I)
print( list(filter(reg.search, input_l)) )
# => ['ManGo SLACKCURRAN 120mL']
请参阅Python演示。
备注:
- 使用
re.search
在字符串内的任何位置搜索匹配项(re.match
仅在字符串开始处搜索(,请参阅以下线程 - 移除
^
(管柱起点(和$
(管柱终点(锚 - 使用
re.I
标志进行不区分大小写的匹配 d*.?d+
是一种更方便的匹配整数或浮点数的模式,因为它还支持类似.95
的数字- 以单词边界结束模式,以匹配作为完整单词的测量单位(注意字符串文字之前的
r
前缀(