在Python下,当您想要获取列表中第一次出现的子字符串或字符的索引时,您可以使用以下内容:
s.find("f")
Run Code Online (Sandbox Code Playgroud)
但是,我想找到字符串中第一个不匹配的字符的索引.目前,我正在使用以下内容:
iNum = 0
for i, c in enumerate(line):
if(c != mark):
iNum = i
break
Run Code Online (Sandbox Code Playgroud)
有没有更有效的方法来做到这一点,比如我不知道的内置函数?
您可以使用正则表达式,例如:
>>> import re
>>> re.search(r'[^f]', 'ffffooooooooo').start()
4
Run Code Online (Sandbox Code Playgroud)
[^f]将匹配除了for之外的任何字符f,start()Match对象的方法(返回者re.search())将给出匹配发生的索引.
为了确保你也可以处理只包含f你想要检查的空字符串或字符串,以确保结果re.search()不是None,如果正则表达式无法匹配将会发生.例如:
first_index = -1
match = re.search(r'[^f]', line)
if match:
first_index = match.start()
Run Code Online (Sandbox Code Playgroud)
如果您不想使用正则表达式,那么您将不会比当前的方法做得更好.你可以使用类似的东西next(i for i, c in enumerate(line) if c != mark),但你需要用一个try和except StopIteration块来包装它来处理只包含mark字符的空行或行.
| 归档时间: |
|
| 查看次数: |
9157 次 |
| 最近记录: |