[Tutor] how to split/partition a string on keywords?

Peter Otten __peter__ at web.de
Fri Aug 24 20:13:13 CEST 2012


Jared Nielsen wrote:

> I implemented eryksun's suggestion and used the replace() method.
> But, playing around with it, what I discovered is that it won't store the
> change.
> For example, when the input text is, "Ham and cheese or chicken and
> waffles":
> 
> #!/usr/bin/python
> 
> text = raw_input("Enter text: ")
> 
> print text.replace("and", "\nand").replace("or", "\nor")
> 
> I get:
> Ham
> and cheese
> or chicken
> and waffles.
> 
> But if I run the following:
> 
> #!/usr/bin/python
> 
> text = raw_input("Enter text: ")
> 
> text.replace("and", "\nand")
> text.replace("or", "\nor")
> 
> print text
> 
> I get the text as it was entered.
> Is there a way to replace text in a string without splitting or
> partitioning?

The replace() method does not modify the original string, it returns a new 
string with the appropriate replacements. With a line like

> text.replace("and", "\nand")

you throw away that new string. Change it to

text = text.replace("and", "\nand")

to keep it. 

However, I doubt you will be satisfied with the result of your script for 
long:

>>> print raw_input().replace("and", "and\n")
vandalizing androids wandering the wastelands
vand
alizing and
roids wand
ering the wasteland
s




More information about the Tutor mailing list