LINUX.ORG.RU

Пустой символ

 


2

1

Как обработать пустой символ в таком коде, как этот:

test_str='Claim 16 заявлен автомат для...'
def re_place_in_line(line):
        match=re.search('(Claim \d+) заявлен[\W,о,а,ы]',line)
        if match:
                replace_what=match.group(0)
                replace_with=match.group(1)+' is directed to'
                line=re.sub(replace_what,replace_with,line)
        return line
print(re_place_in_line(test_str))

Необходимо подставить 'is directed to' как вместо 'заявлено','заявлены','заявлена', так и вместо 'заявлен'. Что подставить вместо \W (он съедает пробел)?

Deleted
Ответ на: комментарий от Deleted

Означает что должны быть учтены от 0 до 1 символа.

Или вот так можно (правда я не знаю какие там у тебя строки могут быть:

#-*- coding: utf-8 -*-
import re

test_strs = [u'Claim 16 заявлен автомат для...',
             u'Claim 17 заявлены автомат для...']
def re_place_in_line(line):
    reg = re.compile(r'%s' % u'(заявлен[\w]{0,1})', re.U)
    return re.sub(reg, 'is directed to', line)

for t in test_strs:
    print(re_place_in_line(t))

pi11 ★★★★★
()
Последнее исправление: pi11 (всего исправлений: 1)
Ответ на: комментарий от ximeric

Обычно вместо '{0,1}' ставят '?'.

Нет. Обычно документацию по Python RE не читают, а изучают только гуглением и ставят именно '{0,1}'

Siado ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.