Hogyan távolítsuk el a többszörös szóközöket egy karakterláncban?

Előfordulhat, hogy egy karakterláncban közvetlenül egymás követően több szóköz szerepel, amely a további feldolgozás szempontjából nem kívánatos. Ezért a feladat az, hogy úgy alakítsuk át a karaktersorozatot, hogy minden egynél több, egymás utáni szóköz helyett csak egyetlen egy szerepeljen.

A talán legegyszerűbb megoldás elve, hogy

  1. megvizsgáljuk, hogy a karakterlánc tartalmaz-e egymást követő két szóközt.
  2. ha nem, akkor nincs teendő, a karaktersorozat az igényünknek megfelelő.
  3. ha igen, tartalmaz két egymás utáni szóközt, akkor ezek mindegyikét helyettesítjük egyetlen szóközzel, és újra megtesszük az 1) lépés szerinti ellenőrzést, hiszen lehet, hogy kettőnél több egymást követő szóközök voltak a kiinduló karaktersorozatban.

A fent vázolt lépések szerkezetéből adódóan a megvalósítás akár iterációval (ciklussal), akár rekurzióval történhet, ahogy az alábbi kódsorok mutatják.

A karakterláncok metódusaiban járatosak mondhatnák azt, hogy még egyszerűbb megoldás a split() metódus határolójel-argumentum nélküli alkalmazása, mert ilyenkor a metódus számára az egymást közvetlenül követő, szóköznek számító határolójelek egyetlen határolójelnek számítanak.

Ez a megoldás azonban nem mindig ad kielégítő eredményt, ahogy azt a fenti kód alsó részén az eredményből láthatjuk. Ugyanis a split() számára nem csak az unicode 0x020 kódpontú szóköz számít határolójelnek, hanem többek között például az ‘\n’, ‘\t’, ‘\r’ és ‘\f’ karakterek is. Hogy melyek még, azt a Python tudásépítés lépésről lépésre című e-könyv „Beépített típusok nyilvános metódusai” fejezetében a karakterláncok metódusai ismertetésénél találjuk, ahol a split() metódus használatának részletes leírása is olvasható.

Érdekel a Python tudásépítés lépésről lépésre az alapoktól az első asztali alkalmazásig című e-könyv.