if语句取决于字符串中内容的顺序

时间:2015-06-16 23:00:36

标签: python string

我想根据字符串中的内容顺序创建不同的<!DOCTYPE html> <html> <body> <select id="uniqueCarNames" name="cars" multiple> <option value="volvo">Long Distance Travel</option> <option value="saab">Amazing </option> <option value="opel">Excellent Travelling</option> <option value="audi">I am rich</option> </select> <input type="text" id="filterMultipleSelection" /> </body> </html> 语句。

if

因此,如果string = "ABC Long Short DEF" string = "XYZ Short Long ZYX" 位于"Long" "Short"之前,请执行x。

string "Short" "Long"之前的string是否为<{1}}。

请注意,string不一定必须包含"Long""Short"。它只能包含其中一个,或者不包含任何内容。

目前,如果有"Long""Short",我会使用下面的代码执行不同的操作。但如果两者都存在,我想将length设置为首先出现的那个。

if "Long" in string:
    length = "Long"
if "Short" in string:
    length = "Short"

3 个答案:

答案 0 :(得分:4)

使用string.find获取子字符串的索引。如果不存在,它将返回-1。

def long_or_short(s):
    sh = s.find("Short")
    ln = s.find("Long")
    if 0 <= sh < ln or ln < 0 <= sh:
        return "Short"
    elif 0 <= ln:
        return "Long"
    else:
        return None

答案 1 :(得分:2)

使用str.indexEAFP

try:
    if string.index("Long") < string.index("Short"):
        length = "Long"
    else:
        length = "Short"
except ValueError:
    if "Long" in string:
        length = "Long"
    elif "Short" in string:
        length = "Short"
    else:
        print ("Long and Short not in string") 

答案 2 :(得分:1)

这是一个通用解决方案,利用.find()将返回从n子字符串列表中匹配的第一个子字符串,而不仅仅是n=2 ie {{ 1}}或'Long',此解决方案可以扩展到任意数量的可能子字符串

双线通用解决方案

'Short'

更具信息性的功能

# assuming string variable to search is named 'string' l = filter(lambda x: x[0] > 0, [[string.find(s),s] for s in ["Long","Short"]]) subString = min(l, key=lambda x: x[0])[1] if l else None 作为要搜索的字符串,将s作为要搜索的子字符串列表。

如果找不到sLstsubS,则会返回s中找到的第一个sLst

None

实施例

def getFirst(s, sLst):
    search = [[s.find(subS),subS] for subS in sLst] # list of [first_occurence, substring]
    search = filter(lambda x: x[0] > 0, search) # filter out searches that returned -1
    if search:
        minSearch = min(search, key=lambda x: x[0]) # find first occurrence
        return minSearch[1] # get subStr
    else:
       return None  # if none found, returns none