编码时难免遇到检查一个字符串是否包含指定的字符串,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