编码时难免遇到检查一个字符串是否包含指定的字符串,Python 提供了好几种方法完成这个任务:

  • index 方法
  • find 方法
  • in 关键词 (性能最好)

以上方法的使用示例如下所示。

message = 'Please keep us informed, and good luck!'
substring = 'good luck'

# 方法一:使用 index 方法
try:
    message.index(substring)
    print('包含指定字符串: ' + substring)
except ValueError:
    pass

# 方法二:使用 find 方法 
if message.find(substring) >= 0:
    print('包含指定字符串: ' + substring)

# 方法三:使用 in 关键词 
if substring in message:
    print('包含指定字符串: ' + substring)

这三种方法的性能是有差异的,下面使用 timeit 库进行测试,测试代码如下:

import timeit

setup = """
message = 'Please keep us informed, and good luck!'
substring = 'good luck'
"""

method_1_test_code = """
message.index(substring)
"""

method_2_test_code = """
message.find(substring)
"""

method_3_test_code = """
substring in message
"""

method_1_taking_time = timeit.timeit(stmt=method_1_test_code, setup=setup, number=10)

method_2_taking_time = timeit.timeit(stmt=method_2_test_code, setup=setup, number=10)

method_3_taking_time = timeit.timeit(stmt=method_3_test_code, setup=setup, number=10)

print('index 方法耗时: ' + str(method_1_taking_time))

print('find 方法耗时: ' + str(method_2_taking_time))

print('in 关键词耗时: ' + str(method_3_taking_time))

测试结果:

index 方法耗时: 2.4999899324029684e-06
find 方法耗时: 1.6999838408082724e-06
in 关键词耗时: 1.400010660290718e-06

从测试结果可以看出 in 关键词性能最好。

有关 Python 代码运行速度的测试方法请参见:如何测试 Python 代码的速度 - datetime, timeit