在Python中for循环和re.sub怎么一起用

2025-06-22 22:39:55
推荐回答(2个)
回答1:

re.sub跟str.replace功能一样,区别在于sub更灵活,效率更高

跟for在一起用不知道具体什么意思,写了2个简单的函数,你参考下吧

import re


def my_re_sub_test():
    """将文件中所有hello全部替换为Hi"""
    for line in open('F:\\tmp.txt', encoding='GBK'):
        newline = re.sub('hello', 'Hi', line)
        print(newline, end='')


def my_re_sub_test2():
    """将字符串中按指定字典的key-value值替换"""
    my_line = 'hello world'
    reg_list = {'l': 'L', 'o': 'O'}
    for key in reg_list:
        my_line = re.sub(key, reg_list[key], my_line)
    print(my_line)

回答2:

在python中re是一个常用的模块,主要是通过正则表达式进行字符串处理。它的速度相对自己用 find, replace, split来说,通常更快。当然功能更强大。

正则表达式也是一种语言,所以如果通过re.compile把它编译成对象,会速度快很多。所以我们经常看到这样的语句
exp = re.compile("\S+")
m = exp.search(bigtext)
print m.group(0)
这段话等同于
m = re.search("\S+", bigtext)
print m.group(0)
re.sub则相当于字符串操作中的replace,比如
sometext = re.sub("(?isu)\r\n", "\n", sometext)
上面这句话是将回车换行,变成换行。这是为了将windows下的文本文件移到linux下,防止某些软件不兼容所做的处理。

简单的说re.sub是做字符串替换的, re.compile是将正则表达式编译成一个对象,加快速度,并重复使用。