Reputation: 4405
I have a list of strings like this:
Item_has_was_updated_May_2010
Item_updated_Apr_2011
Item_got_updated_Sept_2011
I want to iterate through the list of string and update the last 2 parts of the string. The month and the year. The rest of the string I want to remain the same. The month and year will be taken from variables I have set earlier in my script, so let's call the month x and the year y.
My approach is to:
The month and year will be taken from variables I have set earlier in my script, so let's call the month x and the year y.
If anyone can suggest a an approach, it is appreciated.
Upvotes: 4
Views: 2109
Reputation: 17
lst = [
'Item_has_was_updated_May_2010',
'Item_updated_Apr_2011',
'Item_got_updated_Sept_2011',
]
month='Sep';year='2012'
for s in lst:
list=s.split('_')
list[-2:]=(month,year)
r=''
for a in list:
r=r+"%s_"%a
r=r[:-1]
print r
Upvotes: 2
Reputation: 838076
You can do it without regular expressions by using str.rsplit
:
yourlist = [s.rsplit('_', 2)[0] + '_' + x + '_' + y for s in yourlist]
See it working online: ideone
If you want to use formatting instead of string concatenation, try this:
yourlist = ['{}_{}_{}'.format(s.rsplit('_', 2)[0], x, y) for s in yourlist]
See it working online: ideone
Upvotes: 9
Reputation: 4287
I don't think you really need 're'.
You could use something like this:
m="dec"
y=2012
l=["Item_has_was_updated_May_2010",
"Item_updated_Apr_2011",
"Item_got_updated_Sept_2011"]
r=[]
for s in l:
t=s.split("_")
r.append("_".join(t[:-2])+"_%s_%s"%(m,y))
Upvotes: 2