s = u'ft,我'
print re.sub(ur'(?s)&#(\d+);', lambda x:unichr(int(x.group(1))), s)
执行结果:
引用
ft,我
实际上,python的sub函数第二参数,即replacement,可以为一个函数.函数的输入就是成功匹配的match object, 输出,亦即返回值,就是用于替换的replacement.这样可根据具体每次不同的成功匹配对象字串,进行不同的替换.
除了上例,又如,定义替换函数:
def replacem(o):
if o.group(0)=='-':return ' '
else: return '*'
然后
print re.sub ('-{1,2}',replacem,'pro---g--r-am')
输出结果为:
引用
pro* g*r am
实际上,对match obj来说,group()函数在python中的定义是这样的, group(0)为整个匹配成功的字串,而group(1~N)为可能在pattern中出现的捕获型括号所匹配的对象串(这也表明python和大多数语言一样是NFA型的正则表达式:)).
比如开头一例,对匹配成功的两处,","和"我",他们各自内部的group(1)就是(\d+)匹配的内容,即65292和25105,接着函数将它们转成十进制整数,即unicode编码,进而变为unicode字符.
也许读者开始还对开头一例中的(?s)疑惑不解.实际上这是所谓的单行匹配模式,实际上是使点号能匹配本来不能匹配的换行符.为啥叫单行匹配模式我估计是,把一串含有多个物理多行的文本视为单行文本处理,故为单行匹配.
至于为什么例子中要有这个,这就无从考证了,因为没有(?s),该regex一样正常工作.实际上,可能只是原作者的regex使用习惯.-_-b
分享到:
相关推荐
1. **Python字符串基础** Python中的字符串是不可变序列,支持各种操作,如索引、切片、连接、查找、替换等。字符串可以使用单引号或双引号创建,并且支持多行字符串的定义(使用三引号)。 2. **正则表达式...
Chapter 14 Graphics in Python 299 14.1 INTRODUCTION TO BOKEH 299 14.2 INSTALLING BOKEH 299 14.3 USING BOKEH 301 14.3.1 A Simple X-Y Plot 303 14.3.2 Two Data Series Plot 304 14.3.3 A Scatter Plot 306 ...
文档《Python_Regular_Expressions_-_Learn_Python_Regular_Expressions_in_an_Easy_Way.pdf.pdf》的核心内容旨在帮助读者快速掌握Python中正则表达式的基础和高级应用。本书内容详实,不仅包括基础知识,还包括...
- `c13_Use of regex.py`:正则表达式在处理文本数据时非常强大,Python的`re`模块提供了丰富的功能,如匹配、替换和分割字符串。学习正则表达式可以增强你在文本处理方面的技能。 7. **集合操作**: - `c20_Add ...
1. **函数和模块**:在Python中,函数是代码复用的基本单元。30-seconds-of-code提供了许多函数示例,如`flatten()`用于扁平化嵌套列表,`curry()`用于创建柯里化的函数,以及`import_module()`用于动态导入模块等。...
3. **正则表达式(Regex)**:如果敏感词有特定模式,如包含连续的相同字符或特定组合,可以使用Python的`re`模块进行更复杂的匹配。例如,`re.sub()`函数可以替换匹配到的敏感词。 4. **滑动窗口**:为了处理连续...
在Python编程领域,爬虫是一项重要的技能,它允许我们自动抓取互联网上的数据。在这个案例中,我们将讨论如何使用Python来爬取“糗百”网站的段子,这是一个流行的中文幽默社区。首先,我们需要理解爬虫的基本原理...
for i in range(num): if i == num - 1: file_obj2.write('.' + groups_ports[i][3] + '()\n') else: file_obj2.write('.' + groups_ports[i][3] + '(),\n') file_obj2.write(');\n') ``` #### 三、运行结果...
1. **requests库**:Python中的requests库是进行HTTP请求的首选工具,用于获取网页内容。在采集图片时,我们需要首先发送GET请求到目标网页,获取HTML源码。 2. **BeautifulSoup库**:这是一个强大的HTML和XML解析...
for match in iter_matches: print("Iterative match:", match.group(), "at position", match.span()) ``` #### 六、在线测试工具 - **[Regexr](http://regexr.com/)**: 一个非常有用的在线工具,可以帮助你测试...
另外,正则表达式(regex)是Python中处理复杂字符串问题的强大工具。通过导入`re`模块,我们可以使用`re.sub(pattern, repl, string)`函数来替换匹配到的模式。比如,`re.sub(r'\d+', '', 'abc123def456')`会返回`'...
在本资源"Python源码自动办公-10 用Python在Excel中查找并替换数据"中,我们将探讨如何使用Python编程语言处理Excel文件,特别是针对查找和替换数据的自动化任务。Python提供了多个库来操作Excel文件,其中最常用的...
在Python中使用`regex`库,首先需要安装,可以使用`pip install regex`命令。然后,你可以像使用`re`模块一样,调用`regex.match()`、`regex.search()`、`regex.findall()`等方法。由于`regex`库实现了Thompson算法...
Complete Python solution without foreknowledge of the input data in one line 完整的Python解决方案,无需预先了解输入数据,仅用一行代码实现,这体现了Python语言的高度抽象能力和简洁性。 #### 52. Simple...
在编程领域,`path` 和 `regex` 是两个非常重要的概念,它们在处理路径和文本模式匹配时发挥着核心作用。下面将详细解释这两个概念及其应用。 `Path`(路径)通常指的是计算机系统中文件或目录的地址。在不同的操作...
:[0-9]{1,3}\.){3}[0-9]{1,3}\b' # 正则表达式,匹配IPv4地址 ips = re.findall(ip_pattern, soup.text) ``` 最后,提取出的IP地址可以被存储、分析或用于其他目的。 ```python for ip in ips: print(f'找到的IP...
for num in range(1, 11): yield num gen = get_num() for i in gen: print(i) ``` 2. **自定义类模拟内置函数 `range()`**: Python的内置函数`range()`用于创建一个不存储所有元素的序列,而是在需要时...
data['列名'].replace(to_replace=re.compile(r'^旧值'), value='新值', regex=True, inplace=True) ``` ### 6. 保存修改后的数据到新的Excel文件 完成查找和替换后,可以使用Pandas的`to_excel()`方法将结果保存...