在 Python 下,当你想获取列表中第一次出现的子字符串或字符的索引时,你可以使用如下方法:
s.find("f")
但是,我想找到不匹配的字符串中第一个字符的索引。目前,我正在使用以下内容:
iNum = 0
for i, c in enumerate(line):
if(c != mark):
iNum = i
break
有没有更有效的方法来做到这一点,比如我不知道的内置函数?
最佳答案
可以使用正则表达式,例如:
>>> import re
>>> re.search(r'[^f]', 'ffffooooooooo').start()
4
[^f]
将匹配除 f
之外的任何字符,并且 Match 对象的 start()
方法(由 re.search()
) 将给出匹配发生的索引。
为确保您还可以处理空字符串或仅包含 f
的字符串,您需要检查以确保 re.search()
的结果不是None
,如果无法匹配正则表达式,就会发生这种情况。例如:
first_index = -1
match = re.search(r'[^f]', line)
if match:
first_index = match.start()
如果您不想使用正则表达式,那么您不会比当前方法做得更好。您可以使用 next(i for i, c in enumerate(line) if c != mark)
之类的东西,但是您需要用 try
和 except StopIteration
block 处理空行或仅包含 mark
字符的行。
关于Python:找到第一个不匹配的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19191287/