python - 如何使用自定义标签格式轻松解析文本
问题描述
我有带有打开/关闭双括号标签 [[tag]]/[[/tag]] 的文本,并且我想将特定功能应用于所有文本(标签内的文本除外)。
我已经看过 python 解析器,但它们非常复杂,我无法让它们工作。
举个例子,我想改造一下:
“文本文本文本 [[tag]] 文本文本 [[/tag]] 文本文本文本 [[tag]] 文本文本 [[/tag]] 文本文本”
在
“TEXT TEXT TEXT [[tag]] 文本文本 [[/tag]] TEXT TEXT TEXT [[tag]] 文本文本 [[/tag]] TEXT TEXT”
解决方案
使用重新:
import re
# raw text example
raw_text = "text text text [[tag]] text text [[/tag]] text text text [[tag]] text text [[/tag]] text text"
# get text outside tags
convert_text = re.split('\[\[tag\]\].*?\[\[/tag\]\]',raw_text)
convert_text = [string.upper() for string in convert_text]
# get text inside tags with tags
remaining_parts = re.findall('\[\[tag\]\].*?\[\[/tag\]\]', raw_text)
remaining_parts.extend(' ')
# zip two lists
zipped_data = list(zip(convert_text, remaining_parts))
# convert into list
data = []
for item in zipped_data:
data.append(item[0])
data.append(item[1])
# join strings
out_string = ''.join(data)
输出:
TEXT TEXT TEXT [[tag]] text text [[/tag]] TEXT TEXT TEXT [[tag]] text text [[/tag]] TEXT TEXT
推荐阅读
- vb.net - 请参阅选项卡控件面板中的 vb.net 控件
- vb.net - 使用 ODBCDataReader,为什么我无法在 vb.net 中使用 DBNull.Value.Equals 或 IsDBNull 检测字段中的 DBNull?肯定是 DBNull
- bootstrap-4 - 在引导程序中增加表格边框大小
- java - BrowserMobProxy:如何在 docker 的远程服务器上使用?
- google-sheets - COUNTIF 年等于年 - Google 表格
- javascript - 从反应多选下拉列表的选定值创建一个表
- mongoose - 猫鼬上下文中的参数“lModel”是什么?
- python - 没有名为“cog”的模块不和谐
- python - 尝试在 Ubuntu 上安装 PyCharm 时无法联系快照存储错误消息
- firebase - Firebase REST API 删除用户