2013-02-16 4 views
0

Bascially У меня две строки, одна биография, а другая - year_of_birth.Ввод дополнительного текста в строку

содержания биографии:

а а а а.

Родился в Англии. abc abc abc.

abc abc abc abc.

year_of_birth - это номер. Скажем, 1920.

Моего disired выход:

а а а а.

Родился в Англии в 1920. abc abc abc.

abc abc abc abc.

Так что я просто хочу, чтобы придать в 1920 IF родился ключевое слово встречается и после любых символов A-Z, но перед любой пунктуации.

Как это сделать?

Спасибо.

+0

Как вы получаете ** в 1920 **? –

+0

Использовать строковое формирование: '' Родился в Англии в% s. abc abc '% 1920', если вы можете изменить ввод – JBernardo

+0

@JBernardo: Разве вы не имеете в виду '% d'? – Johnsyweb

ответ

3
>>> import re 
>>> year_of_birth = 1920 
>>> re.sub('(?m)[bB]orn[^,.?!:;]+', '\g<0> in %d' % year_of_birth, content) 
'abc abc abc abc.\n\nBorn in England in 1920. abc abc abc.\n\nabc abc abc abc.' 

Здесь [^,.?!:;]+ сопрягает нибудь, что это не знаки препинания. Кроме того, (?m) указывает многострочный, в случае, если пунктуация находится на следующей строке.

1
import re 
re.sub(r'(Born.*?)\.', r'\1 in 1920.', bio) 
Смежные вопросы