python - 在Python中某个符号之后获取段落
问题描述
我是python初学者。
我有一个如下格式的大 txt 文件,由许多单句段落组成:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
****
Sed id placerat magna.
*******
Pellentesque in ex ac urna tincidunt tristique.
Etiam dapibus faucibus gravida.
我试图仅将输出作为星号段落之后的段落[每个星号段落至少 4 个星号]。
我需要的输出:
Sed id placerat magna.
Pellentesque in ex ac urna tincidunt tristique.
我正在尝试这样的事情,但我不知道 A] 如何设置每个星号段落的最少 4 个星号和 B] 如何设置星号段落之后的段落。
import re
article_content = [open('text.txt').read() ]
after_asterisk_article_paragraph = []
string = "****"
after_asterisk_article_paragraph = string[string.find("****")+4:]
print(*after_asterisk_article_paragraph, sep='\n\n')
同样,我刚刚开始使用 Python,所以请原谅。
解决方案
您可能会读取整个文件并使用一个模式来匹配至少 4 个星号,然后是所有非空行或以 4 个星号开头的行。
^\*{4,}((?:\r?\n(?!\s*$|\*{4}).+)*)
^\*{4,}
*
从字符串的开头匹配 4 次或更多次(
捕获组 1(?:
非捕获组\r?\n
匹配换行符(?!\s*$|\*{4}).+
如果它不为空或*
使用负前瞻以 4 次开头,则匹配整行(?!
)*
可选择重复该组
)
关闭捕获组 1
例如使用 re.findall 将返回捕获组 1 值:
import re
file = open('text.txt', mode='r')
result = [s.strip() for s in re.findall(r'^\*{4,}((?:\r?\n(?!\s*$|\*{4}).+)*)', file.read(), re.MULTILINE)]
print(result)
file.close()
输出
['Sed id placerat magna.', 'Pellentesque in ex ac urna tincidunt tristique.']
推荐阅读
- sccm - SCCM 版本 2103 无法使用自动部署规则下载更新
- java - 在使用 Powermock 模拟自定义对象数组时无法子类化最终类类异常
- python - 如何遍历列表以创建 n 个连续值的组合并在 Python 中独立使用它们?
- javascript - React Native ReferenceError:找不到变量:i(无法找到发生此错误的位置)
- go - 如何将 [] 字节转换为整数
- node.js - 使用 Node.JS 和 Multer 处理图像上传是否存在漏洞利用问题?
- javascript - 无法在“HTMLCanvasElement”上执行“toDataURL”:可能无法导出受污染的画布。CORS 漏洞?
- invisible-recaptcha - 编剧:PrintToPDF 未实现
- android - 如何在 Android NDK 中打开 Uri
- python - 集合(数组中的单个对象)返回集合(字符串)