Правильное смещение символов с лишними пробелами, переводом строки и т. - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь реализовать простое решение для коррекции смещения из-за «мусорных» символов, например:

string_1 = "London is the capital of the UK"

-> расположение символов: ("capital", 14,21) и ("UK", 29, 31)

однако, при наличии новой строки et c, местоположение символа изменяется:

string_2 = "London is the\n\ncapital of the\n UK"

-> расположение символов ("capital" are (21,28)), ("UK" are (36,38))

кроме того, строка может содержать любое количество новых строк и других артефактов, а также любое количество ключевых слов.

Мой вопрос заключается в заданном тексте с дополнительными символами (ASCII , новые строки и т. д. c) и некоторые функции очистки, как настроить расположение определенных ключевых слов в очищаемом тексте?

string_2 = cleaning_txt(string_1)

-> ("capital", 14, 21) --> ("capital", 21, 28) -> ("UK", 29, 31) --> ("UK", 36, 38)

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

str.find отлично подходит для этой цели:

string_1 = "London is the capital of the UK"
string_2 = "London       is the\n\ncapital of the UK"

def find_pos(s, match):
    pos = s.find(match)
    return (pos, pos+len(match))

match = 'capital'

find_pos(string_1, match)
# (14, 21)

find_pos(string_2, match)
# (21, 28)
0 голосов
/ 14 февраля 2020

Вы можете очистить вашу строку следующим образом:

x =  "London       is the\n\ncapital of the UK"
x = x.replace('\n','')

while '  ' in x:
    x = x.replace('  ', ' ')

print(x)

Дает:

London is thecapital of the UK
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...