python - 如何在字符串中多次更新两个分隔符之间的文本
问题描述
我正在努力为我的写作工作改进一些工作流程。其中一部分是在提交之前适当地格式化文章,我决定自动化其中的一些过程——但是,我有点卡住了。我口头口述文章以提高效率,如果我可以自动格式化,那将节省大量时间。
我必须在文章中包含标题,这是棘手的部分。因此,我通过放置“[”和“]”来区分标题与文章文本的其余部分,以区分它们的开始和结束位置。然后我添加他们的 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]
如果您是派对的常客或女主人,您应该考虑采用诱人的颜色。
解决方案
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)
你可以试试这样的。
推荐阅读
- c# - 将 C# 函数传递给 CLI/C++ 代码时出现垃圾收集器错误
- typescript - 如何使用 rxjs 过滤器在每个元素中使用可变数量的类别进行过滤
- c# - ObserveEveryValueChanged 未收到所有更改
- javascript - Angular 7,使用来自对象的一些值创建新对象
- python-3.x - 在使用 COPY 将大表读入 pandas 数据帧时使用参数化 SQL 查询
- c# - 如何使用 LINQ/Divide and Conquer 方法以优雅的方式迭代一个循环或无循环
- sql - oracle如何逐日选择24小时时间间隔?
- python-3.x - How can I make the largest number with most numbers of divisors appear in the output?
- python - dask 将数据帧导出到远程存储(S3)
- routing - 从哪里获得已注册 ASN(自治系统编号)的完整列表?