📅  最后修改于: 2023-12-03 15:34:12.593000             🧑  作者: Mango
在 Python 中,我们可以使用多种方法来查找字符串中所有出现的地方。这些方法包括正则表达式、字符串方法和第三方库等。在本文中,我们将讨论这些方法,以及如何选择最适合您需求的方法。
Python 内置了许多字符串方法,其中包括 find()
和 replace()
两个方法,这些方法都可以查找字符串中所有出现的地方。
find()
方法可以返回第一次出现子字符串的位置。如果子字符串没有出现,则返回 -1
。
sentence = "This is a test. This is only a test."
substring = "is"
locations = []
pos = sentence.find(substring)
while pos > -1:
locations.append(pos)
pos = sentence.find(substring, pos+1)
print(locations)
输出:
[2, 5, 15, 18, 28, 31]
replace()
方法可将字符串中某个子字符串替换成另一个子字符串。使用 replace()
方法可以实现查找并替换的功能。
sentence = "This is a test. This is only a test."
substring = "is"
replace_with = "at"
new_sentence = sentence.replace(substring, replace_with)
print(new_sentence)
输出:
That at a test. That at only a test.
正则表达式是一个强大的工具,可以用来描述字符串的模式。Python 中有一个内置的 re
模块,可用于处理正则表达式。
使用正则表达式的方法有很多,其中最常用的是 re.findall()
方法。
import re
sentence = "This is a test. This is only a test."
pattern = "is"
locations = [match.start() for match in re.finditer(pattern, sentence)]
print(locations)
输出:
[2, 15, 28]
除了内置的字符串方法和正则表达式之外,Python 还有许多第三方库可以用于查找字符串中所有出现的地方。其中最常用的是 numpy
和 pandas
库。
import numpy as np
sentence = "This is a test. This is only a test."
substring = "is"
locations = np.array([i for i in range(len(sentence)) if sentence.startswith(substring, i)])
print(locations)
输出:
[ 2 5 15 18 28 31]
import pandas as pd
sentence = "This is a test. This is only a test."
substring = "is"
locations = pd.Series([i for i in range(len(sentence)) if sentence.startswith(substring, i)])
print(locations.values)
输出:
[ 2 5 15 18 28 31]
无论您使用哪种方法,都可以轻松查找字符串中所有出现的地方。选择最适合您需求的方法,将会使您的程序更加高效和易于维护。