a = "how are you ?"
b = "wie gehst's es dir?"
c = [
("how", "wie"),
("are", "gehst's"),
("you", "es")
]
Каков оптимальный метод получения смещений, которые дают:
offsets = [
("how", "wie", (0, 3), (0, 3)),
("are", "gehst's", (4, 6), (4, 11)),
("you", "es", (7, 9), (12, 14))
]
Из ChatGPT предлагается упрощенный способ:
Чтобы сгенерировать желаемые смещения из заданных строк. a и b и список пар подстрок c, нам нужно найти начальную и конечную позиции (индексы) каждой подстроки из a в самом a и каждой подстроки из b в самом b.
Шаги:
- Перебрать каждую пару подстрок в списке c.
- Найти начальную и конечные позиции подстроки из a в строке a.
- Найдите начальную и конечную позиции подстроки из b в строке b.
- Сохраните пару подстрок и соответствующие им позиции.
b = "wie gehst's es dir?"
c = [
("how", "wie"),
("are", "gehst's"),
("you", "es")
]
# Create the offsets list
offsets = []
for substring_a, substring_b in c:
# Find the start and end indices for substring_a in string a
start_a = a.find(substring_a)
end_a = start_a + len(substring_a) - 1
# Find the start and end indices for substring_b in string b
start_b = b.find(substring_b)
end_b = start_b + len(substring_b) - 1
# Append the result as a tuple
offsets.append((substring_a, substring_b, (start_a, end_a), (start_b, end_b)))
# Output the result
print(offsets)
Но есть ли что-то более оптимальное, особенно если термины повторяются? Например
a = "how are you ? are you okay ?"
b = "wie gehst's es dir? geht es dir gut "
c = [
("how", "wie"),
("are", "gehst's"),
("you", "es"),
("are", "geht"),
("you", "es"),
("okay", "gut")
]
Подробнее здесь: https://stackoverflow.com/questions/793 ... gs-offsets
Мобильная версия