0

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...

1
  • You have to save the values into a new list or edit the current, the for loop just creates the string_ variable and sets the value equal to it. Commented Aug 7, 2021 at 19:19

2 Answers 2

2

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') 
Sign up to request clarification or add additional context in comments.

Comments

0

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')

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.