新增编辑距离函数
This commit is contained in:
@@ -218,7 +218,7 @@ class ToolFile(BaseModel):
|
||||
with open(self.OriginFullPath, 'rb') as f:
|
||||
return f.read()
|
||||
def LoadAsText(self) -> str:
|
||||
with open(self.OriginFullPath, 'r') as f:
|
||||
with open(self.OriginFullPath, 'r', encoding='utf-8') as f:
|
||||
return f.read()
|
||||
def LoadAsWav(self):
|
||||
try:
|
||||
@@ -370,8 +370,8 @@ class ToolFile(BaseModel):
|
||||
f.write(binary_data)
|
||||
return self
|
||||
def SaveAsText(self, text_data:str):
|
||||
with open(self.OriginFullPath, 'w') as f:
|
||||
f.writelines(text_data)
|
||||
with open(self.OriginFullPath, 'w', encoding='utf-8') as f:
|
||||
f.write(text_data)
|
||||
return self
|
||||
def SaveAsAudio(self, audio_data:"AudioSegment"):
|
||||
'''
|
||||
|
||||
@@ -52,7 +52,10 @@ def word_segmentation(
|
||||
except ImportError:
|
||||
raise ValueError("jieba is not install")
|
||||
|
||||
def GetEditorDistanceAndOperations(s1:str, s2:str) -> Tuple[int, List[Tuple[str, int, int, str]]]:
|
||||
def GetEditorDistanceAndOperations(
|
||||
s1:str,
|
||||
s2:str,
|
||||
) -> Tuple[int, List[Tuple[Literal["add","delete"], int, int, str]]]:
|
||||
"""
|
||||
计算两个字符串的编辑距离和操作序列
|
||||
操作格式: (操作类型, 开始位置, 结束位置, 内容)
|
||||
@@ -112,3 +115,14 @@ def GetEditorDistanceAndOperations(s1:str, s2:str) -> Tuple[int, List[Tuple[str,
|
||||
edit_distance = m + n - 2 * lcs[m][n]
|
||||
return edit_distance, merged_operations
|
||||
|
||||
def GetDiffOperations(
|
||||
s1:str,
|
||||
s2:str,
|
||||
) -> List[Tuple[Literal["add","delete"], int, int, str]]:
|
||||
"""
|
||||
计算两个字符串的差异操作序列
|
||||
操作格式: (操作类型, 开始位置, 结束位置, 内容)
|
||||
位置基于源字符串s1
|
||||
"""
|
||||
|
||||
return operations
|
||||
Reference in New Issue
Block a user