Iteration over strings
Brett g Porter
bgporter at acm.org
Tue Jul 31 14:17:14 EDT 2007
Robert Dailey wrote:
> Hi,
>
> I have the following code:
>
> str = "C:/somepath/folder/file.txt"
>
> for char in str:
> if char == "\\":
> char = "/"
>
> The above doesn't modify the variable 'str' directly. I'm still pretty
> new to Python so if someone could explain to me why this isn't working
> and what I can do to achieve the same effect I would greatly appreciate it.
>
The thing that you need to remember is that strings in Python never
change (and nothing ever changes that).
Any time that you start out thinking "I need to change this string' you
need to immediately translate that thought into "I need to create a new
string with some changes made to this string".
String objects can already do what you're trying to do here:
>>> str = "C:\\somepath\\folder\\file.txt"
>>> str
'C:\\somepath\\folder\\file.txt'
>>> str2 = str.replace('\\', '/')
>>> str2
'C:/somepath/folder/file.txt'
>>> str
'C:\\somepath\\folder\\file.txt'
replace() returns a new string with all instances of the 1st subsstring
replaced with the second substring -- note that the original string
'str' is unmodified.
Also note that if this is your actual use case, the standard lib also
contains a function os.path.normpath() that does all the correct
manipulations to correctly normalize file paths on the current platform.
More information about the Python-list
mailing list