我正在解析文本,其中包括过滤掉特殊字符或空白,以便对字符串进行正确分类。问题是原始字符串的索引映射回其他元数据(图像中OCRd文本的x,y坐标)。一旦关键字被正确分类,我想通过索引(开始和结束)映射回原始的预处理字符串,而不是关键字本身。位置比关键字更重要,因为关键字不一定是唯一的。你知道吗
很多代码看起来像:
filtered_text = re.sub(\s{5,}, '', line)
mobj = re.match(my_pat, filtered_text)
return (mobj.start(0), mobj.end(0))
我想知道是否可以用一个特殊的“padding/filler”字符代替空字符串?这一特殊性质将满足两个要求:
(1)占用空间:
len(line) == len(filtered_line)
(2)它被下游模式正则表达式匹配项忽略。你知道吗
是否有任何特殊的unicode字符可以使用,或者re模块中的某些内容可以设置为忽略特定字符?你知道吗
另外,我不能将替换模式与匹配模式合并,因为代码的不同部分是相互抽象的。上面的例子非常简单——代码的实际两个独立部分非常复杂。你知道吗
在替换空白时,需要保持从变换位置到原始位置的映射。你知道吗
然后可以对返回的字符串进行匹配,并将索引映射回原始字符串。你知道吗
请注意,如果替换长度超过一个字符,则会有多个索引映射回同一原始索引。你知道吗
如果字符串很长(>;1 MB?),您可能需要优化数据结构。也许你可以用靶场?你知道吗
相关问题 更多 >
编程相关推荐