[英]find position in string while skipping over certain characters
我得到了这个字符串和这个索引位置,我试图在跳过“D”字符的同时找到索引位置。
s="MMMMMMMMDDDDDDDMMMMMMIIMMDDDDDDDDDDDMMMMMMM"
tr1 = 13
截至目前,我有这个代码:
for x in range(tr1):
if s[x] == "D":
continue
else:
print (s[x], x+1)
我应该得到 23 的位置
我不明白你为什么要得到 23? 你的代码做你想做的吗? 由于您使用的是range()
函数,因此您的代码在 13 次迭代后停止,这就是您想要的吗? 如果要打印所有不是 'D' 的字符及其索引+1,我宁愿执行以下操作:
for i, char in enumerate(s):
if char != 'D':
print(char, i+1)
相反,如果您想在找到的第一个 'D' 处停止 for 循环,只需添加一个像这样的 break 语句:
for i, char in enumerate(s):
if char != 'D':
print(char, i+1)
elif char == 'D':
break #stop at first 'D' found
你的 23 应该来自哪里?
我不确定你到底想要什么,但如果我理解正确,你想要第 13 个位置的字符并且你不想计算等于 'D' 的字符。 在您的 for 循环中,您只是在检查第一个第 13 个字符,因为您将 tr1 放在范围内!
所以你想要的代码应该是这样的:
count=0
for x in range(len(s)):
if s[x] == "D":
continue
else:
count +=1
if (count == 13):
print (s[x], x+1)
break
如果你想调整字符“I”的位置,代码应该是:
count=0
for x in range(len(s)):
if s[x] == "D":
continue
else:
count +=1
if (count >= 13):
if (s[x] == "I"):
print (s[x], x+1)
通过这种方式,您可以拥有之前提到的索引23
这是你想要的 ? 我使用 reg ex 去掉大写的 Ds,然后索引 ([13]) 以从 0 开始检索第 13 个位置
import re
s="MMMMMMMMDDDDDDDMMMMMMIIMMDDDDDDDDDDDMMMMMMM"
print (re.findall("[^D]",s)[13])
> 'M'
如果要查看原始字符串(包括 D)的数据:
print (s[13])
>'D'
这是一个应该可以解决问题的单行:
[i for _,i in enumerate(s) if i!='D'][13
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.