cari

Rumah  >  Soal Jawab  >  teks badan

python - if语句的与或运算

最近想提取出特定的URL,遇到问题为预期提取出URL中带有webshell或者phpinfo字段的URL,但是全部URL都匹配出来了:

for url in urls:
    if "webshell" or "phpinfo" in url:
        print url

改成and语句也不符合预期,只提取出了含有phpinfo的url:

for url in urls:
    if "webshell" and "phpinfo" in url:
        print url

PHPzPHPz2773 hari yang lalu1088

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-04-18 09:07:15

    for url in urls:
        if "webshell" in url or "phpinfo" in url:
            print url          
                   
                       
            

    Ini ok, anda pada asalnya menilai "webshell" dahulu, dan jika ia bukan sifar, maka nilai "phpinfo" dalam url "webshell" dan "phpinfo" dalam url adalah terikat...

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:07:15

    if "webshell" or "phpinfo" in url:

    bermaksud if "webshell" atau if "phpinfo" in url dan yang pertama sentiasa benar.

    if "webshell" and "phpinfo" in url:

    Maksudnya ialah if "phpinfo" in url kerana if "webshell" sentiasa berlaku.

    Penyelesaian pada dasarnya adalah seperti yang dikatakan @lock:

    for url in urls:
        if "webshell" in url or "phpinfo" in url:
            print url 

    Jika terdapat banyak perkataan yang digunakan untuk dipadankan hari ini:

    urls = [
        'https://www.example.com/aaa',
        'https://www.example.com/bbb',
        'https://www.example.com/ccc',
    ]
    
    
    def urlcontain(url, lst):
        return any(seg for seg in url.split('/') if seg and seg in lst)
    
    for url in urls:
        if urlcontain(url, ['aaa', 'bbb']):
            print(url)

    Keputusan:

    https://www.example.com/aaa
    https://www.example.com/bbb

    urlcontain(url, lst) Anda boleh bertanya url jika terdapat sebarang rentetanlst dalam

    Dengan cara ini, anda tidak akan menulis pernyataan if terlalu panjang apabila membandingkan sepuluh kata kunci.

    Sudah tentu anda boleh menggunakan re, tetapi saya secara peribadi tidak suka re itu sahaja...


    Soalan yang saya jawab: Python-QA

    balas
    0
  • Batalbalas