在特定字符串后获取多个数字

Getting more than one number after specific string

我在 'RND':

之后从列表中获取号码时遇到问题
myList = [['1123-TDT', '10593917/5422', 'RND', '20.5', 'QWTQWGSAG', 'RND', '40'],
          ['1156-TDT', '51205915/6166', 'ASDWT', '111551', 'RND', '35']]

如果列表项(myList[1])中只有一个RND,我可以在RND之后获取数字。但是如果有两个'em(myList[0]),那么什么也不会发生。

我的示例:

myList = [['1123-TDT', '10593917/5422', 'RND', '20.5', 'QWTQWGSAG', 'RND', '40'],
          ['1156-TDT', '51205915/6166', 'ASDWT', '111551', 'RND', '35']]

listLen = len(我的列表)

对于范围内的 x(listLen):
    如果 'RND' 在 myList[x] 中:
        y = myList[x].index('RND')
        z = myList[x][y+1]
        打印(z)

输出看起来像这样:

20.5
35

但我希望它是:

20.5 40
35

提前致谢!

您需要访问每个子列表和子列表中的每个子元素,如果当前元素等于 "RND":

,则获取当前元素之后的索引处的元素
print( [sub[ind] for sub in myList for ind, ele in enumerate(sub,1) if ele == "RND"])
['20.5', '40', '35']

使用两个正常循环:

# iterate over each sublist
for sub in myList: 
    # check every element in each sublist for "RND"
    # if we find a match print the next element in the list
    for ind, ele in enumerate(sub,1):
        if ele == "RND":
            print(sub[ind])

我们使用 enumerate(sub,1),其中 1 是起始索引,因此当我们访问 sub[ind] 时,如果我们使用 0 的起始索引,我们将获得下一个元素而不是当前元素。

y = myList[x].index('RND') 只会让您看到 第一次 出现。

如果您希望每个子列表的输出打印在一行上,请使用 end=" ":

for sub in myList:
    # check every element in each sublist for "RND"
    # if we find a match print the next element in the list
    for ind, ele in enumerate(sub,1):
        if ele == "RND":
            print(sub[ind],end=" ")
    print()
20.5 40 
35 

您需要遍历列表中的各个列表,以使用您的方法完成此操作。

也许尝试遍历每个列表的列表元素,检查列表元素是否等于 RND,并像您当前所做的那样打印以下索引值。

您唯一需要做的更改是遍历列表元素并使用条件语句查找 RND 而不是仅使用 list.index 来确定 [=10 的索引=].这对你自己来说是一个很好的练习。