首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web刮除- Python -如果字符串中的"text“,那么string = "text”发出冲突的命令?

Web刮除- Python -如果字符串中的"text“,那么string = "text”发出冲突的命令?
EN

Stack Overflow用户
提问于 2020-01-16 23:47:31
回答 2查看 53关注 0票数 0

我有一个不寻常的

" "' '在python中可能有不同的含义吗?

例子是:

代码语言:javascript
复制
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口径”。

我还有其他我说过的地方

代码语言:javascript
复制
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

  • 会导致这种情况吗?
  • ,我的假设是,如果它只满足“”中的确切条件,那么它将执行命令。为什么一个推翻另一个?
EN

回答 2

Stack Overflow用户

发布于 2020-01-17 00:11:03

你需要做两件事。第一种方法是使用elif,如@Oliver.R所提到的那样,但第二种方法是,您必须首先使用最严格的命令进行比较。

例如,如果希望匹配410 Gauge10 Gauge0 Gauge,则需要按照我提到的顺序进行比较。

代码语言:javascript
复制
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")

但是,既然我们正在编程,那么让我们来进行一些编程,使其更简单、更可伸缩。我们可以注意到,必须在较小的字符串之前检查较大的字符串,因此我们可以这样做:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2020-01-16 23:51:18

它正在查找和替换第一个枪口径,但是当它再次搜索该字符串时,它正在查找下一个子字符串("10 Gauge""410 Gauge"中)--您可以使用elif解决这个问题。

代码语言:javascript
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59779440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档