首页 > 解决方案 > 如何使用自定义标签格式轻松解析文本

问题描述

我有带有打开/关闭双括号标签 [[tag]]/[[/tag]] 的文本,并且我想将特定功能应用于所有文本(标签内的文本除外)。

我已经看过 python 解析器,但它们非常复杂,我无法让它们工作。

举个例子,我想改造一下:

“文本文本文本 [[tag]] 文本文本 [[/tag]] 文本文本文本 [[tag]] 文本文本 [[/tag]] 文本文本”

“TEXT TEXT TEXT [[tag]] 文本文本 [[/tag]] TEXT TEXT TEXT [[tag]] 文本文本 [[/tag]] TEXT TEXT”

标签: pythonparsing

解决方案


使用重新:

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

推荐阅读