我想根据字符串中的内容顺序创建不同的<!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"
答案 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)
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
作为要搜索的子字符串列表。
如果找不到sLst
或subS
,则会返回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