检查字符串中是否包含多个子字符串中的任何一个 - Python
checking if any of multiple substrings is contained in a string - Python
我有一个包含禁止子字符串的黑名单:我需要创建一个 if 语句来检查给定 url 中是否包含任何禁止子字符串。如果它不包含它们中的任何一个,我希望它执行 A(如果存在任何禁止,则只执行一次,而不是针对每个禁止子字符串执行一次)。如果 url 包含我希望它执行的禁用子字符串之一 B.
black_list = ['linkedin.com', 'yellowpages.com', 'facebook.com', 'bizapedia.com', 'manta.com',
'yelp.com', 'nextdoor.com', 'industrynet.com', 'twitter.com', 'zoominfo.com',
'google.com', 'yellow-listings.com', 'kompass.com', 'dnb.com', 'tripadvisor.com']
这里只是我用来检查其是否有效的 url 的两个简单示例。 Url1 在里面禁止了子字符串,而 url2 没有。
url1 = 'https://www.dnb.com/'
url2 = 'https://www.ok/'
我尝试了下面有效的代码,但一直在徘徊是否有更好的方法(计算效率更高)?我有一个 100k+ urls 的数据帧,所以担心这会非常慢。
mask = []
for banned in black_list:
if banned in url:
mask.append(True)
else:
mask.append(False)
if any(mask):
print("there is a banned substring inside")
else:
print("no banned substrings inside")
有人知道更有效的方法吗?
您应该添加一个标志,具体取决于 A
或 B
。
ban_flag = False
for banned in black_list:
if banned not in url:
continue
else:
ban_flag = True
if ban_flag:
print("there is a banned substring inside")
else:
print("no banned substrings inside")
这是一个可能的单行解决方案:
print('there is a banned substring inside'
if any(banned_str in url for banned_str in black_list)
else 'no banned substrings inside')
如果您更喜欢不太像 Python 的方法:
if any(banned_str in url for banned_str in black_list):
print('there is a banned substring inside')
else:
print('no banned substrings inside')
我有一个包含禁止子字符串的黑名单:我需要创建一个 if 语句来检查给定 url 中是否包含任何禁止子字符串。如果它不包含它们中的任何一个,我希望它执行 A(如果存在任何禁止,则只执行一次,而不是针对每个禁止子字符串执行一次)。如果 url 包含我希望它执行的禁用子字符串之一 B.
black_list = ['linkedin.com', 'yellowpages.com', 'facebook.com', 'bizapedia.com', 'manta.com',
'yelp.com', 'nextdoor.com', 'industrynet.com', 'twitter.com', 'zoominfo.com',
'google.com', 'yellow-listings.com', 'kompass.com', 'dnb.com', 'tripadvisor.com']
这里只是我用来检查其是否有效的 url 的两个简单示例。 Url1 在里面禁止了子字符串,而 url2 没有。
url1 = 'https://www.dnb.com/'
url2 = 'https://www.ok/'
我尝试了下面有效的代码,但一直在徘徊是否有更好的方法(计算效率更高)?我有一个 100k+ urls 的数据帧,所以担心这会非常慢。
mask = []
for banned in black_list:
if banned in url:
mask.append(True)
else:
mask.append(False)
if any(mask):
print("there is a banned substring inside")
else:
print("no banned substrings inside")
有人知道更有效的方法吗?
您应该添加一个标志,具体取决于 A
或 B
。
ban_flag = False
for banned in black_list:
if banned not in url:
continue
else:
ban_flag = True
if ban_flag:
print("there is a banned substring inside")
else:
print("no banned substrings inside")
这是一个可能的单行解决方案:
print('there is a banned substring inside'
if any(banned_str in url for banned_str in black_list)
else 'no banned substrings inside')
如果您更喜欢不太像 Python 的方法:
if any(banned_str in url for banned_str in black_list):
print('there is a banned substring inside')
else:
print('no banned substrings inside')