我有一些问题想到一个好的算法来替换文本中的某些实体。这里是详细信息: 我有一个文本,我需要格式化为HTML格式的信息是在一个包含实体的字典的Python列表。比方说,例如,原来的文字是这样的(请注意格式):通过索引替换多个字符串的算法
Lorem存有简直是printing和排版行业的虚拟文本。
我会得到的文本将是(不带格式):
Lorem存有简直是印刷排版行业的虚拟文本。
像这样实体的名单:
entities = [{"entity_text":"Lorem Ipsum", "type": "bold", "offset": 0, "length":"11"}, {"entity_text":"dummy", "type": "italic", "offset": 22, "length":"5"},{"entity_text":"printing", "type": "text_link", "offset": 41, "length":"8", "url": "google.com"}]
我的算法应把这个给定的无格式文本和实体到这个网站:使之能
<b>Lorem Ipsum</b> is simply <i>dummy</i> text of the <a href="google.com">printing</a> and typesetting industry
被编译成原始信息。 我试过字符串替换,但它弥补了偏移量(实体从文本开始的位置)。请记住,在文本中可能会有很多格式化的单词,这些单词没有格式化,所以我必须准确找到应格式化的单词。任何人的帮助?我正在用Python编写代码,但你可以指定任何语言的算法
编辑 对不起,我忘了发布我试过的代码。这是它:
format_html(text, entities):
for entity in entities:
try:
entity_text = entity['entity_text']
position = text.find(entity_text, entity['offset'])
if position == entity['offset']:
before = text[:position]
after = text[min(position+entity['length'], len(text)-1):]
if entity['type'] == 'text_link':
text_link = '<a href="{}">{}</a>'.format(entity['url'], entity_text)
text = before + text_link + after
elif entity['type'] == 'code':
code = '<code>{}</code>'.format(entity_text)
text = before + code + after
elif entity['type'] == 'bold':
bold_text = '<b>{}</b>'.format(entity_text)
text = before + bold_text + after
elif entity['type'] == 'italic':
italic_text = '<i>{}</i>'.format(entity_text)
text = before + italic_text + after
elif entity['type'] == 'pre':
pre_code = '<pre>{}</pre>'.format(entity_text)
text = before + pre_code + after
except:
pass
什么算法有*你*尝试的唯一选择?请在这里发布代码。 – blacksite
@not_a_robot,请查看编辑 – Ken
get_message和parse_entity是什么样的?你能否包括那个类和所有相关的代码? *你*可能熟悉你的课程,但我们不是! – blacksite