Python 进行大小写不敏感的字符串替换
在本文中,我们将学习如何在python中进行大小写不敏感的字符串替换。
使用的方法
以下是实现此任务的各种方法:
- 使用re.IGNORECASE、re.escape()、re.sub()
-
使用re.sub()、lambda、re.escape()函数
-
使用split()、lower()和replace()函数
-
使用split()、list()和join()函数
方法1:使用re.IGNORECASE、re.escape()、re.sub()
re.compile()函数
正则表达式模式可以与模式对象结合使用,然后用于模式匹配。该函数还允许在不重写模式的情况下再次搜索模式。
语法
re.compile(pattern, repl, string)
re.sub()函数
使用 re.sub() 函数可以替换字符串中的值,并返回替换后的字符串。当我们使用此函数时,可以使用列表替换多个元素。
语法
re.sub(pattern, repl, string, count=0, flags=0)
re.escape()函数
该函数返回一个将所有非字母数字字符转义的字符串。如果你想匹配一个可能包含正则表达式元字符的任意字面字符串,可以使用该函数。
步骤
以下是执行所需任务的算法/步骤:
- 使用import关键字导入re(正则表达式)模块。
-
创建一个变量来存储 输入字符串 。
-
打印输入字符串。
-
创建另一个变量来存储要替换的输入替换字符串。
-
初始化要替换的子字符串。
-
使用compile()、escape()和IGNORECASE属性(re.IGNORECASE用于忽略大小写)来忽略给定字符串的所有情况。
-
使用正则表达式sub()函数将子字符串替换为替换字符串。
-
在忽略大小写的情况下打印替换后的结果字符串。
示例
下面的程序使用re.IGNORECASE、re.escape()和re.sub()函数进行大小写不敏感的字符串替换,返回一个字符串。
# importing re(regex) module
import re
# input string
inputString = "hello TuTorialsPOint python"
# printing input string
print("Input String: ", inputString)
# input replace string to be replaced with
replaceString = "java"
# substring to be replaced
subString = "tutorialspoint"
# compilation step to escape the word for all cases
# the re.IGNORECASE is used to ignore cases
compileObj = re.compile(re.escape(subString), re.IGNORECASE)
#Substitute the substring with replacing a string using the regex sub() function
resultantStr = compileObj.sub(replaceString, inputString)
# printing resultant string after replacing
print("Resultant string after replacing: ", resultantStr)
输出
执行以上程序后,将生成以下输出:
Input String: hello TuTorialsPOint python
Resultant string after replacing: hello java python
方法2:使用re.sub()、lambda和re.escape()函数
lambda函数
lambda函数是一个小的匿名函数。
lambda函数可以有任意数量的参数,但只能有一个表达式。
语法
lambda arguments : expression
示例
下面的程序使用re.sub()、lambda和re.escape()函数执行不区分大小写的字符串替换后返回一个字符串 –
# importing re(regex) module
import re
# input string
inputString = "hello TuTorialsPOint python"
# printing input string
print("Input String: ", inputString)
# input replace string to be replaced with
replaceString = "java"
# substring to be replaced
subString = "tutorialspoint"
resultantStr = re.sub('(?i)'+re.escape(subString), lambda k: replaceString, inputString)
print("Resultant string after replacing: ", resultantStr)
输出
在执行上述程序时,将生成以下输出:
Input String: hello TuTorialsPOint python
Resultant string after replacing: hello java python
方法3:使用split(),lower()和replace()函数
split() - 将字符串拆分为列表。我们可以定义分隔符;默认分隔符是任何空格字符。
lower() - 将字符串中的所有大写字符转换为小写字符。
replace()函数 - 返回一个替换了旧子字符串的所有出现的新子字符串的字符串的副本。
语法
string.replace(old, new, count)
示例
以下程序使用split()、lower()和replace()函数进行不区分大小写的字符串替换后返回一个字符串:
# input string
inputString = "hello TuTorialsPOint python"
# printing input string
print("Input String: ", inputString)
# input replace string to be replaced with
replaceString = "java"
# substring to be replaced
subString = "tutorialspoint"
# splitting input string into a list of words
wordsList = inputString.split()
# traversing through each word of words list
for word in wordsList:
# checking whether the current word is equal to the given substring
# by converting them into lowercase using the lower() function
if(word.lower() == subString.lower()):
# replacing current word with the input replace string
inputString = inputString.replace(word, replaceString)
print("Resultant string after replacing: ", inputString)
输出
执行后,上面的程序将生成以下输出:
Input String: hello TuTorialsPOint python
Resultant string after replacing: hello java python
方法4:使用split()、list()和join()函数
join() - join()是Python中的一个字符串函数,用于连接由字符串分隔符分隔的序列元素。这个函数将序列元素连接起来转换为一个字符串。
list() 函数(将序列/可迭代对象转换为列表)。
示例
以下程序使用split()、list()和join()函数进行不区分大小写的字符串替换后返回一个字符串 –
# input string
inputString = "hello TuTorialsPOint python"
# printing input string
print("Input String: ", inputString)
# input replace string to be replaced with
replaceString = "java"
# substring to be replaced
subString = "tutorialspoint"
# splitting input string into a list of words
wordsList = inputString.split()
# traversing through index and word of @@ words list
for index, word in enumerate(wordsList):
# converting current word into lowercase and checking
# whether it is equal to substring
if word.lower() == subString:
# replacing that word with the given replace string
wordsList[index] = replaceString
# converting words of wordlist into a string
resultantStr = " ".join([word for word in wordsList])
print("Resultant string after replacing: ", resultantStr)
输出
Input String: hello TuTorialsPOint python
Resultant string after replacing: hello java python
结论
在本文中,我们学习了如何使用4种不区分大小写的方法替换给定的字符串。此外,我们还学习了如何使用正则表达式模块的IGNORECASE属性来忽略字符串的大小写。