-
2021-04-27 04:30:42
今天上网看到有人贴出来一个Python中字符串替换的函数replace_words。大意是随便一个txt文件,用Python读取之后,可以用自定义的dictionary,把所有的key替换成value.
def replace_words(text, word_dic):
yo = re.compile('|'.join(map(re.escape, word_dic)))
def translate(mat):
return word_dic[mat.group(0)]
return yo.sub(translate, text)
我试了一下,还挺好用的。
my_dic = {'Colour':'Color', 'Centre':'Center'}
text_2 = replace_words(text_1, my_dic)
结果文件text_1里所有的Colour和Centre都被替换了。
但是这个毕竟是网上看来的,有几个地方不太明白,请教一下:
问题一,第2行的'|'.join(map(re.escape, word_dic)),先用escape对字符串中的非字母数字进行转义,然后为什么要用'|'把我的dic这么一个字典连起来?字符可以取“或”,字典可以“或”么?
问题二,第4行的word_dic[mat.group(0)],直接写成word_dic[mat]不好么?
问题三,第5行的yo.sub(translate, text),这个是最费解的…… re.sub很好理解,但是这个是re.compile.sub,而且是用text这样一个read()出来的文本、去替换translate这样一个空函数?字符替换函数?
网上随手找的这么一个函数,因为我水平有限还请大家多指点。谢谢!
问题一,第2行的'|'.join(map(re.escape, word_dic)),先用escape对字符串中的非字母数字进行转义,然后为什么要用'|'把我的dic这么一个字典连起来?字符可以取“或”,字典可以“或”么?map(re.escape, word_dic) 等价于 map(re.escape, word.dic.keys())
# 返回 一个有所以字典key 的 list
'|'.join(_that_list__) #把所有的key 用 | 连起来
# 返回 Colour|Centre
'|' 在正则表达式里就是 ’或‘的意思
问题二,第4行的word_dic[mat.group(0)],直接写成word_dic[mat]不好么?不可以。
mat 是个正则表达式search text 之后返回 Match 对象, 这个对象不是字典里的key , word_dic的key是string
问题三,第5行的yo.sub(translate, text),这个是最费解的…… re.sub很好理解,但是这个是re.compile.sub,而且是用text这样一个read()出来的文本、去替换translate这样一个空函数?字符替换函数?re.compile.sub --> 会搜索text中 'Colour|Centre'(Colour 或 Center) 一旦找到了match 就调用translate函数进行转化 Colour 就会被转化成 word_dic['Colour']也就是 'Color'
玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19088.html
相关文章 Recommend
更多相关内容 -
python字符串替换的2种方法
2020-12-24 15:14:15python 字符串替换 是python 操作字符串的时候经常会碰到的问题,这里简单介绍下字符串替换方法。 python 字符串替换可以用2种方法实现: 1是用字符串本身的方法。 2用正则来替换字符串 下面用个例子来实验下: a = ... -
python字符串替换第一个字符串的方法
2020-09-19 05:29:38主要介绍了python字符串替换第一个字符串的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 -
Python字符串替换实例分析
2021-01-20 04:36:40本文实例讲述了Python字符串替换的方法。分享给大家供大家参考。具体如下: 单个字符替换 s = 'abcd' a = [a, b, c] b = [c, d, e] import string s.translate(string.maketrans(''.join(a),''.join(b))) print s ... -
python字符串替换
2021-08-18 16:35:43返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次。 示例 upcallbackfunstr = "\ char *func(char *oldpayload)\n\ {\n\ #define PAYLOAD_SIZEstr.replace(old, new[, max])
参数
old – 将被替换的子字符串。
new – 新字符串,用于替换old子字符串。
max – 可选字符串, 替换不超过 max 次
返回值
返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次。示例
upcallbackfunstr = "\ char *func(char *oldpayload)\n\ {\n\ #define PAYLOAD_SIZE 100\n\ char *payload = NULL;\n\n\ \ if(oldpayload != NULL)\n\ free(oldpayload);\n\ payload = (char *)malloc(PAYLOAD_SIZE);\n\ memset(payload, 0, PAYLOAD_SIZE);\n\ sprintf(payload, datanode, dataname);\n\ return payload;\n\ }\n\n" print(upcallbackfunstr) str1 = upcallbackfunstr.replace("datanode", "%s") str2 = str1.replace("dataname", "hello") print(str2)
-
Python字符串替换
2021-04-27 04:30:44Python字符串替换Python字符串替换教程在Python replace()函数详解定义replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数 max,则替换不超过 max 次。语法str.replace(old, new[,...Python字符串替换
Python字符串替换教程
在
Python replace()函数详解
定义
replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数 max,则替换不超过 max 次。
语法
str.replace(old, new[, max])
参数
参数
描述
str
需要替换的原字符串。
old
将被替换的子字符串。
new
新字符串,用于替换 old 子字符串。
max
可选字符串, 替换不超过 max 次。
返回值
返回替换后的字符串。
案例
替换字符串
使用 replace() 函数,实现字符串全部替换
print("嗨客网(www.haicoder.net)")
# 使用 strip() 函数,去除字符串的指定字符
strHaicoder = 'I love python, and study python from haicoder!'
print("before replace strHaicoder =", strHaicoder)
strHaicoder = strHaicoder.replace("python", "Golang")
print("after replace strHaicoder =", strHaicoder)
程序运行后,控制台输出如下:
首先,我们定义了一个字符串类型的
因为,我们没有指定第三个参数,即替换次数,因此,整个字符串中的所有的 “python” 被替换为了 “Golang”。
替换字符串
使用 replace() 函数,实现字符串全部替换
print("嗨客网(www.haicoder.net)")
# 使用 strip() 函数,去除字符串的指定字符
strHaicoder = 'I love python, and study python from haicoder!'
print("before replace strHaicoder =", strHaicoder)
strHaicoder = strHaicoder.replace("python", "Golang", 1)
print("after replace strHaicoder =", strHaicoder)
程序运行后,控制台输出如下:
这次,我们指定了 replace 函数的第三个参数,即,只替换一次,结果,我们发现,整个字符串中的 “python” 只被替换了一次。
Python字符串替换总结
在 Python 中,我们需要将一个字符串替换成另一个字符串,使用 replace 函数。Python replace() 函数语法:
str.replace(old, new[, max])
-
python字符串替换re.sub()实例解析
2021-01-20 01:58:48这篇文章主要介绍了python字符串替换re.sub()实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 re.sub(pattern, repl, string, count=0, flags=0) ... -
python同时替换多个字符串方法示例
2020-09-18 16:00:12主要介绍了python同时替换多个字符串方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
Python字符串替换:.replace()方法、替换字符串列表中的子字符串
2021-01-13 12:34:09在本文中,我们将讨论如何使用replace()方法在Python中替换字符串中的子字符串,适合在Linux平台中操作。Python安装参考:在Ubuntu 18.04系统上安装Python 3.8的两种方法。.replace()方法在Python中,字符串表示为不...在本文中,我们将讨论如何使用replace()方法在Python中替换字符串中的子字符串,适合在Linux平台中操作。Python安装参考:在Ubuntu 18.04系统上安装Python 3.8的两种方法。
.replace()方法
在Python中,字符串表示为不可变的str对象,str类带有许多允许您操作字符串的方法。
.replace()方法采用以下语法:
str.replace(old, new[, maxreplace])
1、str-您正在使用的字符串。
2、old-您要替换的子字符串。
3、new-替换旧子字符串的子字符串。
4、maxreplace-可选参数,您要替换的旧子字符串的匹配数,匹配从字符串的开头开始计算。
该方法返回字符串srt的副本,其中部分或全部旧的子字符串匹配项被新的替换,如果未给出maxreplace,则替换所有出现的事件。
在下面的示例中,我们将字符串s中的子字符串替换为miles:
>>> s = 'A long time ago in a galaxy far, far away.'
>>> s.replace('far', 'miles')
结果是一个新的字符串:
'A long time ago in a galaxy miles, miles away.'
字符串文字通常用单引号引起来,尽管也可以使用双引号。
当给出可选的maxreplace参数时,它将限制替换匹配项的数量,在以下示例中,我们仅替换第一次出现的情况:
>>> s = 'My ally is the Force, and a powerful ally it is.'
>>> s.replace('ally', 'friend', 1)
结果字符串将如下所示:
'My friend is the Force, and a powerful ally it is.'
要删除子字符串,请使用空字符串''代替,例如,要从以下字符串中删除空间,可以使用:
>>> s = 'That’s no moon. It’s a space station.'
>>> s.replace('space ', '')
新的字符串如下所示:
`That’s no moon. It’s a station.'
替换字符串列表中的子字符串
要替换字符串列表中的子字符串,请使用以下语法:
s.replace('old', 'new') for s in list
让我们看下面的例子:
>>> names = ['Anna Grace', 'Betty Grace', 'Emma Grace']
>>> new_names = [s.replace('Grace', 'Lee') for s in names]
>>> print(new_names)
上面的代码创建列表的副本,所有出现的子字符串Grace都被Lee替换:
['Anna Lee', 'Betty Lee', 'Emma Lee']
结论
用Python编写代码时,替换字符串中的子字符串是最基本的操作之一,按照以上说明操作即可。
相关主题
-
python字符串替换replace函数
2019-11-03 11:21:11python字符串替换replace函数 replace(old, new, count) old,旧字符或字符串 new,新字符或字符串 count,最大替换数量,从起始位置开始计数,默认替换所有 注意:replace函数替换字符串,不影响原字符串 示例1:... -
python字符串替换re.sub()方法解析
2021-01-01 10:18:05pattern可以是一个字符串也可以是一个正则,用于匹配要替换的字符,如果不写,字符串不做修改。\1 代表第一个分组 repl是将会被替换的值,repl可以是字符串也可以是一个方法。如果是一个字符串,反斜杠会被处理为... -
Python字符串拼接、截取及替换方法总结分析
2020-09-21 16:47:08主要介绍了Python字符串拼接、截取及替换方法,结合实例形式总结分析了Python针对字符串的拼接、截取与替换的原理与常见使用技巧,需要的朋友可以参考下 -
Python字符串替换占位符
2019-12-14 23:18:18s = "{0}-{1},{2}".format("zhang", 2018, 2019) print(s) s = "{name},{year}-{net}".format(name="phil", year=2019, net="blog.csdn.net"...print(s) s = "{name},{0}".format(2019, name="zhangphil") print(s... -
python之字符串替换
2022-04-01 13:53:57方法一: """ ...new -- 新字符串,用于替换old子字符串。 max -- 可选字符串, 替换不超过 max 次 """ temp_str = 'this is a test' print(temp_str.replace(temp_str[2],'aa')) print(temp_str.... -
Python去除、替换字符串空格的处理方法
2020-12-25 01:37:31个人想到的解决方法有两种,一种是 .replace(' old ',' new ') 第一个参数是需要换掉的内容比如空格,第二个是替换成的内容,可以把字符串中的空格全部替换掉. 第二种方法是像这样 str_1_data = ' a b c ' str_2_... -
python字符串替换之re.sub()
2021-01-11 23:47:51re.sub(pattern,repl,string,count=0,flags=0)pattern可以是一个字符串也可以是一个正则,用于匹配要替换的字符,如果不写,字符串不做修改。\1 代表第一个分组repl是将会被替换的值,repl可以是字符串也可以是一个... -
python 字符串替换ASCII码中的特殊字符
2020-12-24 10:35:361、python的字符串不能直接用索引的方式进行替换,比如 stringA='asdfghj' stringA[2]='1' 会提示语法错误 2、python常规可以通过字符串拼接、或者replace替换的方式组成新的字符串,比如 stringA='asdfghj' ... -
python字符串替换功能string.replace()可以用正则表达式,更优雅
2021-11-12 16:52:47python 中的字符串替换操作,也就是 string.replace() 是可以用正则表达式的。 之前,我的代码写法如下: 使用正则表达式也生效后,代码变得优雅简洁: 备注:上图中的base_info 是 pandas 里的 dataframe 数据... -
python 字符串替换、正则查找替换
2018-05-23 21:25:00正则查找是否含有,re.search查找整个字符串,只要匹配即可。re.match从字符串开始查找,若开头没有匹配上则认为没有 result = re.search( " " , two).group() print (result) # 正则查找并替换 print ...