首页 > 解决方案 > 如何在字符串中多次更新两个分隔符之间的文本

问题描述

我正在努力为我的写作工作改进一些工作流程。其中一部分是在提交之前适当地格式化文章,我决定自动化其中的一些过程——但是,我有点卡住了。我口头口述文章以提高效率,如果我可以自动格式化,那将节省大量时间。

我必须在文章中包含标题,这是棘手的部分。因此,我通过放置“[”和“]”来区分标题与文章文本的其余部分,以区分它们的开始和结束位置。然后我添加他们的 H2 标签并将必要的单词大写。我正在努力寻找在字符串中找到它们的最佳方法(它们会随机发生)并将它们替换为等效的大写子字符串,并用分隔符('['和']')交换为 H2标签。

我看到了很多 RegEx 解决方案,但我不确定如何使用不同的函数修改字符串,然后使用它。我一个接一个地遍历字符,寻找分隔符。你会如何处理这个问题?

例如,我会将其作为文章文本和指示新段落的标题,但它们都在一个字符串中:

“颜色会影响人们的心情。为油漆选择合适的色调可以完全改变房间的氛围。[用颜色欢迎客人]如果你是聚会的常客或女主人,你应该考虑一种诱人的颜色。”

[用颜色欢迎您的客人] 将被提取、大写,并在两侧添加标签。如:[h2]用颜色欢迎您的客人[\h2]

def parse_for_headers(self):
    index = 0
    index_one = 0
    index_two = 0

    for char in self.input_text:
        if char == header_signal_start:
            index_one = index

        if char == header_signal_end:
            index_two = index

            header = self.input_text[index_one:index_two]
            header = self.capitalize_words(header)
            header = self.make_h2(header)
            self.input_text = self.input_text[:index_one] + header + self.input_text[index_two:]

        index += 1

它给出了我想要的粗略输出,但这是做事的最佳方式吗?我觉得超级邋遢。

我对它进行了更进一步的编辑。

def parse_for_headers(self):
    index = 0
    index_one = 0

    for char in self.input_text:
        if char == header_signal_start:
            index_one = index

        if char == header_signal_end:
            index_two = index

            header = self.input_text[index_one + 1:index_two]
            header = self.capitalize_words(header)
            header = self.make_h2(header)
            self.input_text = self.input_text[:index_one] + '\n\n' + header + '\n' + self.input_text[index_two + 1:]

        index += 1

输出:

颜色对人的情绪有影响。为油漆选择合适的色调可以完全改变房间的气氛。

[H2]用色彩迎接你的客人[/H2]

如果您是派对的常客或女主人,您应该考虑采用诱人的颜色。

标签: pythonparsingtext

解决方案


import re
test = "[Welcoming your guests with color] would be extracted, capitalized, and [flanked] by tags."

# finds the portion of text between square brackets
result = re.findall(r'\[.*?\]', test) 

final = []
for i in result:
    # Remove brackets
    i = (i.replace('[', ''))
    i = (i.replace(']', ''))
    # Capitalise. First split the words in the sentence, capitalise, and rejoin
    i = i.split(" ") 
    i = ' '.join([word.capitalize() for word in i])   
    # Add tags
    i = "[h2]" + i + "[\h2]"
    # Store results in a list
    final.append(i)

你可以试试这样的。


推荐阅读