45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
import re
|
||
from difflib import ndiff
|
||
|
||
|
||
def get_diff(original: str, modified: str) -> list[str]:
|
||
"""
|
||
Get the difference between two strings using difflib.
|
||
|
||
Parameters:
|
||
- original: The original string.
|
||
- modified: The modified string.
|
||
|
||
Returns:
|
||
A list of differences.
|
||
"""
|
||
return list(ndiff(original.split(), modified.split()))
|
||
|
||
|
||
def apply_diff(original: str, diff: list[str]) -> str:
|
||
"""
|
||
Apply the difference to the original string.
|
||
|
||
Parameters:
|
||
- original: The original string.
|
||
- diff: The difference obtained from get_diff function.
|
||
|
||
Returns:
|
||
The modified string.
|
||
"""
|
||
pattern = re.compile(r"^(\+|-) ")
|
||
|
||
# Используем list comprehension вместо цикла с append
|
||
result = []
|
||
for line in diff:
|
||
match = pattern.match(line)
|
||
if match:
|
||
op = match.group(1)
|
||
if op == "+":
|
||
result.append(line[2:]) # content
|
||
# Игнорируем удаленные строки (op == "-")
|
||
else:
|
||
result.append(line)
|
||
|
||
return " ".join(result)
|