在python中查找特定文本的优雅方法

时间:2018-06-25 07:49:02

标签: python

有没有比这更好的从字符串中排除字符串的方法了?抱歉,我是编程新手。 例如,我想通过搜索字符串列表来查找bettext [1]。

bettext[0] = '1. HL Over + / Under'
bettext[1] = 'Over + / Under'
bettext[2] = 'H2 Over + / Under'

excl_str_1 = "1. HL Over + / Under"
excl_str_2 = "2. HL Over + / Under"
excl_str_3 = "corners"
excl_str_4 = "yellow cards"
excl_str_5 = "1st"
excl_str_6 = "H2"


if not (excl_str_1) in bettext:
    if not (excl_str_2) in bettext:
        if not (excl_str_3) in bettext:
            if not (excl_str_4) in bettext:
                if not (excl_str_5) in bettext:
                    if not (excl_str_6) in bettext:
                        if (search_str) in bettext:
                            print(bettext)

很抱歉,如果它已经被回答了,我尝试了两个不同但相似的stackoverflow答案,并试图将它们应用于此代码,但没有用

3 个答案:

答案 0 :(得分:1)

是的!

对于初学者,将所有排除的字符串放在列表中,因为您将对它们执行相同的操作。然后使用all来确保此列表中的每一项都是正确的:

excl_strings = ["1. HL Over + / Under", "2. HL Over + / Under", "corners", "yellow cards", "1st", "H2"

if all(excl_string not in bettext for excl_string in excl_strings):
   if search_str in bettext:
       print(bettext)

答案 1 :(得分:1)

首先,对字符串使用容器,而不是n个变量。我建议使用一个集合,因为FROM python:3 # Copy of large number of commands 检查将在恒定时间内运行。

in

(该集合包含string_check = {"1. HL Over + / Under", "2. HL Over + / Under", "corners", ...} excl_str_1,...,excl_str_2。)

接下来,使用内置的search_str

any

这大致相当于:

if not any(s in string_check for s in bettext):
    # do something

for s in bettext: if s in string_check: break else: # do something 看起来很奇怪。将其解析为for/else

答案 2 :(得分:1)

有一些实用程序可以缩短您的代码,特别是您可以使用字符串列表来排除和allany,并且您的情况为generator expression

kubectl create clusterrolebinding client-admin \
    --clusterrole=cluster-admin \
    --user=client