【发布时间】:2023-03-15 22:30:01
【问题描述】:
Python 中的字符串有一个 find("somestring") 方法,它返回字符串中“somestring”的索引号。
但是假设我有一个如下字符串:
“$5 $7 $9 总成本:$35 $14”
我想找到在字符串“Total Cost”之后第一次出现'$'的索引——我希望能够告诉python,搜索' $',从“总成本”的索引号开始,并返回您找到的第一次出现的“$”的索引号(相对于整个字符串)。 find() 方法将返回 0,而 rfind() 在这种情况下也不起作用。
一种笨拙的方法如下:
def findStrAfterStr(myString, searchText, afterText):
splitString = myString.split(afterText)
myIndex = len(splitString[0]) + len(afterText) + splitString[1].find(searchText)
return myIndex
myString = "$5 $7 $9 Total Cost: $35 $14"
searchText = "$"
afterText = "Total Cost"
findStrAfterStr(myString, searchText, afterText)
但似乎应该有一种更简单的方法来做到这一点,我认为可能有,但我只是不知道它是什么。想法?
当我发现自己经常这样做时,这对切片特别有用:
myString[myString.find("startingSubstr"):myString.find("endingSubstr")]
当然,我希望“endingSubstr”是出现在“startingSubstr”之后的那个。
【问题讨论】:
-
你应该使用正则表达式。另外,您真的需要放置美元,还是只需要找出金额?
-
我有点喜欢正则表达式 n00b -- 我该如何使用正则表达式?
-
再说一次,你需要什么?
-
我需要放置 $...
-
我猜你真正想要的是总成本的价值,在这种情况下
re.search(r'Total Cost: \$(\d+)', s).group(1)做得很好。
标签: python string string-matching