텍스트의 일부 엔티티를 대체하기위한 좋은 알고리즘을 생각하는 데 몇 가지 문제가 있습니다. 세부 사항은 다음과 같습니다. html로 형식화해야하는 텍스트가 있습니다. 형식에 관한 정보는 엔티티 사전이 들어있는 파이썬 목록에 있습니다. (형식에주의하십시오)의 원래 텍스트가 같은 것을 예를 들어 가정 해 봅시다 :인덱스로 다중 문자열을 대체하기위한 알고리즘
로렘 입숨 간단하다 printing 및 조판 업계의 더미 텍스트입니다. 내가 얻을 것이다
텍스트는이 (포맷없이)입니다 :
로렘 입숨은 단순히 인쇄 및 조판 산업의 더미 텍스트입니다.
와 같은 개체의 목록 :
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"}]
이 HTML로 제공되지 않은 텍스트 및 개체 번역해야 내 알고리즘 : 그래서 그것은 수
<b>Lorem Ipsum</b> is simply <i>dummy</i> text of the <a href="google.com">printing</a> and typesetting industry
을 원래 메시지로 컴파일된다. 문자열 바꾸기를 시도했지만 오프셋 (텍스트 시작 부분의 엔터티 위치)이 엉망입니다. 그리고 텍스트에 서식이있는 많은 단어가있을 수 있다는 점을 기억하십시오. 서식이 지정되지 않은 단어는 서식 지정되어야하는 단어를 정확하게 찾아야합니다. 누구 한테 도움이 필요 하신가요? 나는 파이썬 코드를 쓰고 있어요하지만 당신은 어떤 언어로 알고리즘을 지정할 수 있습니다
편집 내가 시도 코드를 게시하는 것을 잊었다 죄송합니다. 즉 :
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