为了验证迁移工具,我想比较两个文本,一个是源A,另一个来自目标工具B.要填充B,我使用的是基于RESET API的JSON。 B对文本应用了一些我不确切知道的“转换”。
以下是我正在使用的代码片段:
bkclient = Client()
for mapping in BkMapping.select(): #get all objects
entity = Elgg_Entities.get(Elgg_Entities.guid == mapping.elgg_id)
if entity.subtype == 5:#postopic
pass
else:
elgg_desc = unicodedata.normalize("NFKD", entity.entity.description)
bk_content = unicodedata.normalize("NFKD", bkclient.get_post(mapping.bkid).get("data").get('content'))
if resume(bk_content) == resume(elgg_desc):
pass
else:
print('bk content')
print(bk_content)
print("elgg content")
print(elgg_desc)
input('continue...')
结果:
#### bk content (B) ######
<p>Bonjour à tous,</p>
<p>Je souhaite récolter des informations sur les actions menées en faveur des Seniors au sein du Groupe.</p>
<p>Si vous menez ou avez mené des actions en faveur des seniors et de leur insertion, pourriez-vous m’en faire part. Si je peux avoir des retours d’ici demain matin, ce serait super ! Merci d’avance de vos retours.</p>
######### elgg content (A) #########
<p>Bonjour à tous,</p>
<p>Je souhaite récolter des informations sur les actions menées en faveur des Seniors au sein du Groupe.</p>
<p>Si vous menez ou avez mené des actions en faveur des seniors et de leur insertion, pourriez-vous m’en faire part. Si je peux avoir des retours d’ici demain matin, ce serait super ! Merci d’avance de vos retours.</p>
所以,我正在寻找一个工具来处理那些处理重音符&lt; =&gt; html实体,空格等的文本。
答案 0 :(得分:0)
了解如何操作,BeautifulSoup可以解码html实体:
def remove_accents(input_str):
nkfd_form = unicodedata.normalize('NFKD', input_str)
only_ascii = nkfd_form.encode('ASCII', 'ignore')
return only_ascii
def normalize(text):
text = re.sub(r'\s+', '', str(BeautifulSoup(text)), flags = re.MULTILINE)
return str(remove_accents(text))
def compare_text(s1, s2):
s1 = normalize(s1.lower())
s2 = normalize(s2.lower())
l1 = len(s1)
l2 = len(s2)
if l1 == l2:
return s1 == s2
return False
t1="""
<p>Bonjour à tous,</p>
<p>Je souhaite récolter des informations sur les actions menées en faveur des Seniors au sein du Groupe.</p>
<p>Si vous menez ou avez mené des actions en faveur des seniors et de leur insertion, pourriez-vous m’en faire part. Si je peux avoir des retours d’ici demain matin, ce serait super ! Merci d’avance de vos retours.</p>
"""
t2="""
<p>Bonjour à tous,</p>
<p>Je souhaite récolter des informations sur les actions menées en faveur des Seniors au sein du Groupe.</p>
<p>Si vous menez ou avez mené des actions en faveur des seniors et de leur insertion, pourriez-vous m’en faire part. Si je peux avoir des retours d’ici demain matin, ce serait super ! Merci d’avance de vos retours.</p>
"""
print(compare_text(t1, t2))
True