Python字符串替换三个问题,python字符串替换,今天上网看到有人贴出来一
Python字符串替换三个问题,python字符串替换,今天上网看到有人贴出来一
今天上网看到有人贴出来一个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'
编橙之家文章,
相关内容
- 想给processing-py.sh传递参数怎么做,,./processing
- 为什么Python pycharm不能自动补全代码呢,pythonpycharm,Py
- Python __getitem__语句执行及转存方法求助,python__getitem
- Python怎么实现跳板机连接线内部网络Mysql服务器的原理
- 请问树莓派一定需要安装Python-dev包蚂,树莓python-dev,我
- 请问python中opeio.open\codecs.open三者之间作用分别是什么,
- 怎么判断某个开源python项目是否适合自己,判断开源
- pandas内存错误MemoryError如何解决,pandasmemoryerror, File "
- Python爬虫返回unicode字符串如何得到汉字呢,pythonunico
- web开发和部署用pyenv还是virtualenv,pyenvvirtualenv,两种环境
评论关闭