Python:找到第一个不匹配的字符

标签 python string

在 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) 之类的东西,但是您需要用 tryexcept StopIteration block 处理空行或仅包含 mark 字符的行。

关于Python:找到第一个不匹配的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19191287/

相关文章:

python - 可选位置参数的 Argparse 值

python - 在 Pandas 中,如何获取包含列表的 Series 的 value_counts()

c# - 类 Base64 字符串转换,到更小的字符集

从 'char*' 到 'char' 的 Char 无效转换 [-fpermissive]

python - 从 Google Cloud Function python3.7 连接到 Google Cloud SQL

python - 如何在 tkinter 中使无声异常变得更响亮?

python - 如何使用ssh执行远程脚本

java - 将字符串更改为 altCase

string - 如何删除字符串,matlab之间的多余空格?

java - 如何从字符串创建 char[][]?