bbartling
bbartling

Reputation: 3502

list of strings using replace to modify strings

I can modify the last couple characters in a string like this:

old_string = 'slipstream_internal/slipstream_hq/24/ZN-SP'
new_string = old_string.replace('ZN-SP', 'OCC-SCHEDULE')

print(new_string) this modified new_string is what I am looking for:

'slipstream_internal/slipstream_hq/24/OCC-SCHEDULE'

Curious why doesn't this work on a for loop for through a list of strings?

release_list = ['slipstream_internal/slipstream_hq/8/ZN-SP', 
               'slipstream_internal/slipstream_hq/6/ZN-SP', 
               'slipstream_internal/slipstream_hq/10/ZN-SP', 
               'slipstream_internal/slipstream_hq/19/ZN-SP', 
               'slipstream_internal/slipstream_hq/20/ZN-SP', 
               'slipstream_internal/slipstream_hq/37/ZN-SP', 
               'slipstream_internal/slipstream_hq/38/ZN-SP', 
               'slipstream_internal/slipstream_hq/39/ZN-SP', 
               'slipstream_internal/slipstream_hq/12032/Space Temperature Setpoint Active', 
               'slipstream_internal/slipstream_hq/12033/Space Temperature Setpoint Active', 
               'slipstream_internal/slipstream_hq/31/ZN-SP', 
               'slipstream_internal/slipstream_hq/29/ZN-SP', 
               'slipstream_internal/slipstream_hq/12028/Space Temperature Setpoint Active', 
               'slipstream_internal/slipstream_hq/27/ZN-SP', 
               'slipstream_internal/slipstream_hq/30/ZN-SP', 
               'slipstream_internal/slipstream_hq/26/ZN-SP', 
               'slipstream_internal/slipstream_hq/34/ZN-SP', 
               'slipstream_internal/slipstream_hq/12035/Space Temperature Setpoint Active', 
               'slipstream_internal/slipstream_hq/36/ZN-SP', 
               'slipstream_internal/slipstream_hq/25/ZN-SP', 
               'slipstream_internal/slipstream_hq/23/ZN-SP', 
               'slipstream_internal/slipstream_hq/24/ZN-SP']


for string_ in release_list:
    string_ = string_.replace('ZN-SP', 'OCC-SCHEDULE')
    string_ = string_.replace('Space Temperature Setpoint Active', 'Occupancy Request')

if I print(release_list) the values are unchanged. Any tips greatly appreciated...

Upvotes: 0

Views: 36

Answers (2)

Mark Ransom
Mark Ransom

Reputation: 308206

The for string_ loop generates a new variable string_, and updating it does not change what's contained in the list. You need to modify the list directly.

for i in range(len(release_list)):
    release_list[i] = release_list[i].replace('ZN-SP', 'OCC-SCHEDULE')

Upvotes: 0

fsimonjetz
fsimonjetz

Reputation: 5802

You store the new string in the local variable string_, but never put it back into the list – to do that, you can either build a new list or set the new strings in the old one via indexing:

for i,string_ in enumerate(release_list):
    string_ = string_.replace('ZN-SP', 'OCC-SCHEDULE')
    # assign result to the item in the list
    release_list[i] = string_.replace('Space Temperature Setpoint Active', 'Occupancy Request') 

Upvotes: 2

Related Questions