regex 正则表达式检查两个字符串是否相等但包含不同的上标

yacmzcpb  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(177)

我比较两个PDF版本,并提供它们之间的差异。我遇到的一个问题是,对于一些版本之间相同的单词,它们有不同的上标。即使上标是不同的,我不感兴趣的标记它作为一个差异,因为它创造了太多的无意义的噪音
例如:
旧PDF -“这是一个词”
新PDF -“这是一个词”
这会产生很多噪音,我不想把它标记为一个差异,所以我试图创建一个正则表达式模式,我可以用它来忽略它
我需要创建一个模式,检查词根是否相同,并在后面跟随一些上标字符
以下是我到目前为止得到的:

pattern = '[a-zA-Z]+[\u02b0-\u207f]'

我需要的第一部分,而不是检查根字符串是相同的,其次是一些上标字符(S)
有什么想法吗有没有更好的方法来识别这些单词?

jecbmhm3

jecbmhm31#

我建议看看unicodedata.category并使用它来消除Lm(修饰符字母)字符如下

import unicodedata
s1 = "This is a wordᵃᵃᵃ"
s2 = "This is a wordᵇᵇᵇ"
s1 = ''.join(i for i in s1 if unicodedata.category(i) != "Lm")
s2 = ''.join(i for i in s2 if unicodedata.category(i) != "Lm")
print(s1) # This is a word
print(s2) # This is a word
print(s1==s2) # True

但是请记住,它删除了Lm类别中的所有符号,而不是严格的字母。

相关问题