Хотите знать, если кто-нибудь может пролить свет на эту проблему. Я пытаюсь найти название и извлечь калибр винтовки / ружья / чего-либо из названия - с некоторой помощью его созрели до этого
Название будет таким, например:
Инвестарм 410 калибра 100L
однако, поскольку я использую
if calibre in gun_calibre:
Он производит выход: 10 калибров
Из-за очевидного наличия 10 калибров а также калибра 410 в моем списке калибров.
Кто-нибудь знает, как я могу найти эту строку для точного соответствия калибра, а не выполнять в основном поиск содержимого (аффективно)
последней мыслью было, что сортировка по длине исправит эту проблему, но, к сожалению, это не так.
'' ''
fa_calibre = soup.select_one('h1[itemprop="name"]')
gun_calibre = fa_calibre.text if fa_calibre else ''
calibres = ['4 Gauge', '4 gauge', '4G', '4 G', '6 Gauge', '6 gauge', '6G', '6 G', '8 Gauge', '8 gauge', '8G', '8 G', '10 Gauge', '10 gauge', '10G', '10 G', '12 Gauge', '12 gauge', '12G', '12 G', '14 Gauge', '14 gauge', '14G', '14 G', '16 Gauge', '16 gauge', '16G', '16 G', '20 Gauge', '20 gauge', '20G', '20 G', '28 Gauge', '28 gauge', '28G', '28 G', '410 Gauge', '410 gauge', '410G', '410 G', '.17 HMR', '.17hmr', '.17 hmr', '.22 LR', '.22lr', '.22 lr', '.22 WMR' '.22WMR', '.22 wmr', '.22wmr', '.17 Hornet', '.17Hornet', '.17 HORNET', '.17HORNET', '.17 MACH II', '.17 MACH 2', '.17MACH II', '.17MACH 2', '.17 Mach II', '.17 Mach 2', '.17mach II' '.17 REM', '.17 REM Fireball', '.17 WSM', '.204 Ruger', '.22 Hornet', '.22 Magnum', '.22 Short', '.22-250', '.220 Swift', '.222', '.223', '.243', '.25-06', '.257 Weatherby Magnum', '.260 REM', '.270', '.270 WSM', '.275', '.30-06', '.30-30', '.300 ACC Blackout', '.300 Ultra Mag', '.300 Win Mag', '.300 WSM', '.303', '.308', '.338 Blaser Magnum', '.338 Lap Mag', '.338 Win Mag', '.357 Magnum', '.375 H&H Mag', '.38 / .357 Magnum', '.40-09', '.408 Cheytac', '.416 REM Mag', '.416 Rigby', '.44 Magnum', '.44-40', '.444', 'Multiple in Stock', '.45 Long Colt', '.45-60', '.45-70', '.45-90', '.45-120', '.45-70 Govt.', '.450', '.458 Win Mag', '.470 Nitro Express', '.50 BMG', '.577', '6.5mm Grendel', '6.5mm Creedmore', '6.5x284', '6.5x47 Lapua', '6.5x54', '6.5x55', '6mm BR', '7.5x55', '7.62', '7.62x39', '7.62x51', '7.62x54R', '7.92', '7mm REM MAG', '7mm-08', '7x57', '7x64', '8.5x63', '8mm REM MAG', '8x57', '8x68', '9.3x62', '9.3x74R', 'Multiple Calibre', '9mm RF', '12 G & 20 G', '20 G & 28 G', '20 G & 28 G & 410 G', '28G & 410 G', '.177', '.177 (BB)', '.20', '.22', '.25', '.30', '4.5mm', '6mm (BB)', '.177', '.177 (BB)', '.20', '.22', '.25', '.30', '6mm', '.32', '.32 ACP', '.32 AUTO', '.357', '.357 MAGNUM', '.38 SPECIAL', '.38 SUPER AUTO', '.38 AUTO', '.40', '.44', '.44 MAGNUM', '.45', '.45 ACP', '9MM', '1in', '9MM RF', '.22 SHOT', '.22 GAUGE', '28G & 410G', '12G & 20G', '16G & 8X57', '12G & 20G', '20G & 28G', '20G & 28G & 410G', 'FLARE', '.357', '.22 MAGNUM']
for calibre in calibres:
if re.search(calibre, gun_calibre):
gun_calibre = calibre
else:
gun_calibre = calibre
array = [guntrader_id, gun_title, gun_makes, gun_models, gun_calibre, gun_licences, gun_orients, gun_barrels, gun_barrels_fractions, gun_stocks_whole, gun_stocks_fractions, gun_choke1, gun_choke2, gun_origins, gun_triggers, gun_ejections, gun_scopes, gun_serials, gun_stocknos, gun_conditions, gun_description, gun_price]
print(array)
'' ''