正则表达式sub,rearch结合使用处理小说文本

Posted 肥宅Sean

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式sub,rearch结合使用处理小说文本相关的知识,希望对你有一定的参考价值。


之前写过很多关于用python进行爬取小说的爬虫。
但是我们发现有些小说的章节里面,标题不同的作者总是用不同方法来进行标记。
考虑到现在手机的阅读器,分章节的时候,很有可能就不能识别。

一般来说,目前手机阅读器识别不同的章节进行分章的时候,是识别出“第”跟“章”两个字,来结合进行判断的。

所以对于不同的章节表达方法,我们需要做一定的处理(这样让我们之后去找章节的时候会比较方便)。

比如,我最近就爬到一本小说。这个小说的章节方法如下标识

1、

像上面这样的章节的话,一般阅读器都是很难去识别的,原因很简单。因为在小说内容中也会出现类似的字样。 一个数 再加上“、”符号

为了实现对于这样的内容的处理,下面使用正则表达式来处理。
我一开始是想能不能直接用sub去减掉(因为这样可能就只需要三四行代码就可以搞定了。)后来发现好像不行,因为需要把数值也提取出来。

所以,我们的目标很简单,就是把
1、变成 第1章

代码如下;

# @Time    : 2018/5/23 13:04
# @Author  : Sean
# @Site    : 
# @File    : test.py
# @Software: PyCharm

import re

name = '小说名字.txt'
url = "D:/Code/Python/normal/Noval/"
with open(url + name, 'r') as f:
    strings = f.readlines()
pattern = re.compile('(\d+)、')
for i in range(len(strings)):
    a = re.search(pattern, strings[i])
    if a and len(strings[i]) < 20:
        strings[i] = re.sub(pattern, '第' + a.groups()[0] + '章', strings[i])

with open(url + name, 'w') as f:
    f.write('\n'.join(strings))

以上是关于正则表达式sub,rearch结合使用处理小说文本的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式使用 xslt 匹配某些元素文本

python爬虫之小说网站--下载小说(正则表达式)

使用vba做一个正则表达式提取文本工具

正则表达式:如何将 re.sub 与可变数量的元素一起使用?

Nginx位置正则表达式来处理/ sub /目录中多个WordPress站点的永久链接

re库:Python中正则表达式的处理与应用