gpt4 book ai didi

python字符串操作,在字符串中查找子字符串

转载 作者:行者123 更新时间:2023-12-02 21:35:22 25 4
gpt4 key购买 nike

我正在尝试在 python 中的较大字符串中查找子字符串。我试图找到字符串“每秒请求数:”找到后出现的文本。看来我对 python 字符串和 python 的了解总体上缺乏。

我的错误出现在第三行代码 minusStuffBeforeReqPer = output[reqPerIndx[0], len(output)] ,我收到错误,没有 [0]在 reqPerIndx 上,我尝试访问一个元组,但使用它我收到错误:我 int object has no attribute __getitem__ 。我试图在 output 中找到 reqPerStr 的开头索引字符串。

代码

#output contains the string reqPerStr.
reqPerStr = "Requests per second:"
reqPerIndx = output.find(reqPerStr)
minusStuffBeforeReqPer = output[reqPerIndx[0], len(output)]
eolIndx = minusStuffBeforeReqPer.find("\n")
semiColIndx = minusStuffBeforeReqPer.find(":")
instanceTestObj.reqPerSec = minusStuffBeforeReqPer[semiColIndx+1, eolIndx]

最佳答案

您必须使用output[begin:end],而不是output[begin, end](这就是切片普通字符串/列表/等的语法的工作原理) 。所以:

minusStuffBeforeReqPer = output[reqPerIndx:len(output)]

但是,这是多余的。所以你应该这样做:

minusStuffBeforeReqPer = output[reqPerIndx:]

通过省略切片的 end 部分,切片将一直到达 output 的末尾。


在没有 [0] 的情况下访问元组会出现错误,因为您已将元组(即 (reqPerIndx, len(output)) 传递给切片 [...]),并且您会收到有关 int 没有 __getitem__ 的错误,因为当您写入 reqPerIndx[0],您正在尝试获取 reqPerIndx 的第 0 个元素,它是一个整数,但是当然不存在“整数的第 0 个元素”这样的东西“,因为整数没有元素。


正如@AshwiniChaudhary 在评论中指出的那样,如果未找到子字符串,str.find 将返回-1。如果您确定您要查找的内容始终会在 output 中的某个位置找到,我想您不需要处理 -1 情况,但它无论如何,这样做可能是个好主意。

reqPerIndx = output.find(reqPerStr)
if reqPerIndx != -1:
minusStuffBeforeReqPer = ...
# etc
else:
# handle this case separately

使用正则表达式您可能会有更好的运气。我不知道 output 是什么样子,所以我只是猜测 - 您应该调整它以匹配 output 中的任何内容。

>>> import re
>>> re.findall(r'(?:Requests per second:)\s*(\d+)', "Requests: 24")
[]
>>> re.findall(r'(?:Requests per second:)\s*(\d+)', "Requests per second: 24")
['24']

关于python字符串操作,在字符串中查找子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21534563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com