如何爬取红楼梦.txt文档中的每一章节的标题和内容
时间: 2023-05-14 21:06:08 浏览: 151
可以使用Python中的正则表达式来爬取红楼梦.txt文档中的每一章节的标题和内容。首先,读取文档中的所有内容,然后使用正则表达式匹配每一章节的标题和内容,最后将它们存储到一个字典中。以下是示例代码:
```python
import re
with open('红楼梦.txt', 'r', encoding='utf-8') as f:
content = f.read()
pattern = re.compile(r'第.+回\s+(.+)\n([\s\S]+?)(?=第.+回|$)')
chapters = {}
for match in pattern.finditer(content):
title = match.group(1)
text = match.group(2).strip()
chapters[title] = text
print(chapters)
```
这段代码使用正则表达式`第.+回\s+(.+)\n([\s\S]+?)(?=第.+回|$)`来匹配每一章节的标题和内容。其中,`第.+回`匹配章节的标题,`\s+`匹配标题和正文之间的空格,`(.+)`匹配标题的内容,`\n`匹配换行符,`([\s\S]+?)`匹配正文的内容,`(?=第.+回|$)`表示正文的内容必须以下一章节的标题或文档结尾为结尾。
最后,将每一章节的标题和内容存储到一个字典中,其中标题为键,正文为值。
相关问题
如何爬取红楼梦.txt文档中的每一章节的内容
可以使用Python的文件读取和字符串处理功能来实现。首先,使用Python的open函数打开红楼梦.txt文件,然后使用readlines函数读取每一行的内容。接着,使用字符串处理函数strip去除每一行的空格和换行符,判断每一行是否以“第”和“回”开头,如果是,则说明这是一章的开始,记录下章节名,然后将接下来的行合并为该章节的内容。最后,将每一章节的内容保存到一个列表中即可。
以下是示例代码:
```
chapters = []
with open('红楼梦.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
chapter_title = ''
chapter_content = ''
for line in lines:
line = line.strip()
if line.startswith('第') and line.endswith('回'):
if chapter_content:
chapters.append((chapter_title, chapter_content))
chapter_title = line
chapter_content = ''
else:
chapter_content += line
if chapter_content:
chapters.append((chapter_title, chapter_content))
```
这样,chapters列表中就包含了每一章节的标题和内容。
用re库中的内容爬取红楼梦.txt文档中的每一章节的内容
可以使用以下代码来实现:
```python
import re
with open('红楼梦.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 匹配每一章节的正则表达式
pattern = re.compile(r'第.+?回.+?\n')
chapters = pattern.findall(text)
for chapter in chapters:
print(chapter)
```
这段代码使用正则表达式匹配每一章节的标题,并将其打印出来。你可以根据需要修改代码,比如将章节标题和内容存储到数据库或文件中。
阅读全文