Reputation: 129
Here is my list,
['Query Date :September 07, 2017',
'Address :Aguila arizona',
'Latitude :33.9428069', 'Longitude :-113.1740805',
'Elevation :2170.4 Feet',
'Elevation Limitation: ASCE 7* Ground Snow **LoadElevation** 3,000 feet: Ground Snow Load is0 ',
'Elevation > 3,000 and 4,500 feet: Ground Snow Load is5 ',
'Elevation > 4,500 and 5,400 feet: Ground Snow Load is10 ',
'']
I want to split on a particular word(ie LoadElevation) which is at 5th element in the list. So after Load it should get splitted.
Output should be like
['Query Date :September 07, 2017',
'Address :Aguila arizona', 'Latitude :33.9428069',
'Longitude :-113.1740805', 'Elevation :2170.4 Feet',
'Elevation Limitation: ASCE 7* Ground Snow **Load',
'Elevation** 3,000 feet: Ground Snow Load is0 ',
'Elevation > 3,000 and 4,500 feet: Ground Snow Load is5 ',
'Elevation > 4,500 and 5,400 feet: Ground Snow Load is10 ',
'']
Guys help me. Thanks in advance.
Upvotes: 1
Views: 107
Reputation: 92894
Short solution using re.findall()
function:
import re
l = ['Query Date :September 07, 2017', 'Address :Aguila arizona', 'Latitude :33.9428069', 'Longitude :-113.1740805', 'Elevation :2170.4 Feet', 'Elevation Limitation: ASCE 7* Ground Snow LoadElevation 3,000 feet: Ground Snow Load is0 ', 'Elevation > 3,000 and 4,500 feet: Ground Snow Load is5 ', 'Elevation > 4,500 and 5,400 feet: Ground Snow Load is10 ', '']
l[5:6] = re.findall(r'.*\Load|Elevation.*', l[5])
print(l)
The output:
['Query Date :September 07, 2017', 'Address :Aguila arizona', 'Latitude :33.9428069', 'Longitude :-113.1740805', 'Elevation :2170.4 Feet', 'Elevation Limitation: ASCE 7* Ground Snow Load', 'Elevation 3,000 feet: Ground Snow Load is0 ', 'Elevation > 3,000 and 4,500 feet: Ground Snow Load is5 ', 'Elevation > 4,500 and 5,400 feet: Ground Snow Load is10 ', '']
Upvotes: 1
Reputation: 356
For generic you can try followinig code:
import re
for index,line in enumerate(list1):
if("LoadElevation" in line):
newList = re.split("LoadElevation",line)
new_index = index
list1 = list1[:index]+ [ele + "Load" if index1%2==0 else "Elevation"+ele for index1,ele in enumerate(newList)] + list1[index+1:]
print list1 #['Query Date :September 07, 2017', 'Address :Aguila arizona', 'Latitude :33.9428069', 'Longitude :-113.1740805', 'Elevation :2170.4 Feet', 'Elevation Limitation: ASCE 7* Ground Snow **Load', 'Elevation** 3,000 feet: Ground Snow Load is0 ', 'Elevation > 3,000 and 4,500 feet: Ground Snow Load is5 ', 'Elevation > 4,500 and 5,400 feet: Ground Snow Load is10 ', '']
Upvotes: 0
Reputation: 78780
Asumming your "splitting element" occurs only once, get its index, slice up to that index, insert whatever you want, then add the rest of the list.
>>> a = [1, 2, 'SplitHere', 3, 4]
>>> idx = a.index('SplitHere')
>>> a[:idx] + ['Split', 'Here'] + a[idx+1:]
[1, 2, 'Split', 'Here', 3, 4]
I hardcoded the split because you did not give any rules or criteria by which to split the target word.
Upvotes: 0