python - if语句的与或运算
PHPz
PHPz 2017-04-18 09:05:15
0
2
1085

最近想提取出特定的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

PHPz
PHPz

学习是最好的投资!

全部回复(2)
左手右手慢动作
for url in urls:
    if "webshell" in url or "phpinfo" in url:
        print url          
               
                   
        

这样才可以, 你原来的是先判断"webshell",如果不为零再判断"phpinfo" in url. "webshell" 和 "phpinfo" in url并列...

Peter_Zhu
if "webshell" or "phpinfo" in url:

这样做的意思是 if "webshell" or if "phpinfo" in url 而前者恒成立。 if "webshell" or if "phpinfo" in url 而前者恆成立。

if "webshell" and "phpinfo" in url:

這樣做的意思是 if "phpinfo" in url 因為 if "webshell" 恆成立。

解法基本上如 @洛克 所說:

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

如果今天用來匹配的 word 很多的話:

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)

結果:

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

urlcontain(url, lst) 可以問 url 裡面是不是有 lst 裡面的任何一個 string

這樣子要比對十個關鍵字也不會寫出太長的 if 述句。

當然要用 re 也可以,只是我個人不太喜歡 re rrreee

这样做的意思是 if "phpinfo" in url 因为 if "webshell" 恒成立。

解法基本上如 @洛克 所说: rrreee 如果今天用来匹配的 word 很多的话:

rrreee 🎜结果:🎜 rrreee 🎜urlcontain(url, lst) 可以问 url 里面是不是有 lst 里面的任何一个 string🎜 🎜这样子要比对十个关键字也不会写出太长的 if 述句。 🎜 🎜当然要用 re 也可以,只是我个人不太喜欢 re 就是了...🎜 🎜 🎜🎜我回答过的问题🎜: Python-QA🎜
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板