在特定字符串后获取多个数字
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 的索引=].这对你自己来说是一个很好的练习。
我在 '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 的索引=].这对你自己来说是一个很好的练习。