Предполагая, что вы хотите, год, и все строки одинаково отформатирован, вы можете избежать регулярных выражений:
test = '| birth_date = 22 January 1898 |'
year = test.split()[-2]
print year
Расширение этого в функцию:
def get_year(input):
'''Returns year as integer, empty string if invalid input.'''
output = ''
if 'birth_date' in input:
output = input.split()[-2]
try:
output = int(output)
except:
output = ''
return output
test = ['| birth_date = 22 January 1898 |',
'| death_date = 22 January 1898 |',
'| birth_date = 22 January XXXMLC |',
'| birth_date = 23 January 1961 |']
for input in test:
result = get_year(input)
if not result:
result = 'Invalid input'
print(input, result)
Пробовали что-нибудь? –
Какие 4 цифры? Год? –
Что-то вроде '\ d {4} \ s * \ | $' Я бы это сделал, полагая, что строка заканчивается на трубе. – chris85