Regex найти последовательные письма - PullRequest
0 голосов
/ 28 марта 2020

как найти последовательную строку "210" в строке "21043213213". Строка всегда начинается с «210».

Проблема, с которой я столкнулся, заключается в том, что если «210» находится в середине строки, он все равно будет печатать ее. В приведенном ниже примере он превратил «K» в «L», потому что нашел 210 в строке. Как я могу сказать регулярное выражение, чтобы найти только «210» в начале.

Пример:

Ввод:

1fzzvk   K 21000345678
1fzzvk   K 34210887632

Ожидаемый результат:

1fzzvk K 21000345678
1fzzvk L 34210887632

Код:

with open(file, 'r') as file:
    with open(dir+'wupannew.txt', 'w') as fout:
        for f in file:
            if re.search('210', f):
                rflag = re.sub('L', 'K', f)
                fout.write(rflag)
                print(f)
            if not re.search('210', f):
                rflag = re.sub('K', 'L', f)
                fout.write(rflag)

1 Ответ

1 голос
/ 28 марта 2020

вы можете использовать:

import re

s = "21043213213"

r = re.search('210', s)
if r:
    print(r.group())

после редактирования:

import re

s1 = '1fzzvk   K 21000345678'
s2 = '1fzzvk   K 34210887632'


print(re.sub(r'K 210', 'L 210', s1))
print(re.sub(r'K 210', 'L 210', s2))

вывод:

1fzzvk   L 21000345678
1fzzvk   K 34210887632
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...