Я хочу итеративно соединить несколько наборов символов в строке. Пример:
mystr = 'T h i s _ i s _ a _ s e n t e n c e'
joins = [('e', 'n'), ('en', 't'), ('i', 's'), ('h', 'is')]
# do multiple replace
for bigram in joins:
mystr = mystr.replace(' '.join(bigram), ''.join(bigram))
print(mystr)
'T his _ is _ a _ s ent en c e'
В первой итерации он объединяет e n
в en
, затем en t
в ent
и так далее. Важно, чтобы соединения выполнялись по порядку, так как соединение ('en', 't') не работает, если ('e', 'n') не было соединено.
Со строкой из 20 МБ и 10 КБ соединений это занимает некоторое время. Я ищу, чтобы оптимизировать это, но я не знаю, как. Некоторые из вещей, которые я отбросил:
- Я не использовал регулярное выражение, как в этом вопросе потому что я не знаю, как сделать
re.sub
, где подстановка представляет собой совпадение, но объединенное вместе - Я не использовал
str.translate
как этот вопрос либо потому, что, насколько мне известно, translate может переводить только отдельные символы, а в мойjoins
есть несколько
Есть ли какой-либо алгоритм, строка или регулярное выражение или любая другая функция, которая позволила бы мне это сделать? Благодарю вас!
mystr.replace(' ','').replace('_',' ')
- person JenilDave   schedule 12.12.2020