我有一个不寻常的
" "和' '在python中可能有不同的含义吗?
例子是:
calibre = soup.select_one('h1[itemprop="name"]')
gun_calibre = calibre.text if calibre else ''
if "410 Gauge" in gun_calibre:
gun_calibre = gun_calibre.replace(gun_calibre,"410 Gauge")
if "10 Gauge" in gun_calibre:
gun_calibre = gun_calibre.replace(gun_calibre,"10 Gauge")在上面的例子中,如果我有"Mossberg 410口径猎枪“,蟒蛇就会把它当作"10口径”。
我还有其他我说过的地方
gun_calibre = gun_calibre.replace(gun_calibre,".308")
if ".30" in gun_calibre:
gun_calibre = gun_calibre.replace(gun_calibre,".30")因为在这两个if语句中都有.30,所以.308将被抓取为.30,而不是.308。
发布于 2020-01-17 00:11:03
你需要做两件事。第一种方法是使用elif,如@Oliver.R所提到的那样,但第二种方法是,您必须首先使用最严格的命令进行比较。
例如,如果希望匹配410 Gauge、10 Gauge和0 Gauge,则需要按照我提到的顺序进行比较。
if "410 Gauge" in gun_calibre:
gun_calibre = gun_calibre.replace(gun_calibre,"410 Gauge")
elif "10 Gauge" in gun_calibre:
gun_calibre = gun_calibre.replace(gun_calibre,"10 Gauge")
elif "0 Gauge" in gun_calibre:
gun_calibre = gun_calibre.replace(gun_calibre,"0 Gauge")但是,既然我们正在编程,那么让我们来进行一些编程,使其更简单、更可伸缩。我们可以注意到,必须在较小的字符串之前检查较大的字符串,因此我们可以这样做:
calibres = ['410 Gauge', '0 Gauge', '10 Gauge', '.30', '.308', '.22 LR', '.223']
sorted_calibres = sorted(calibres , key=len, reverse=True)
gun_calibre = ''
for calibre in sorted_calibres:
if calibre in gun_calibre:
gun_calibre = calibre
break发布于 2020-01-16 23:51:18
它正在查找和替换第一个枪口径,但是当它再次搜索该字符串时,它正在查找下一个子字符串("10 Gauge"在"410 Gauge"中)--您可以使用elif解决这个问题。
if "410 Gauge" in gun_calibre:
gun_calibre = gun_calibre.replace(gun_calibre,"410 Gauge")
elif "10 Gauge" in gun_calibre:
gun_calibre = gun_calibre.replace(gun_calibre,"10 Gauge")https://stackoverflow.com/questions/59779440
复制相似问题