[Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
Jan Voges
jan.voges at gmx.de
Fre Jun 18 11:16:51 CEST 2004
- Vorherige Nachricht: [Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nächste Nachricht: [Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nachrichten sortiert nach:
[ Datum ]
[ Thema ]
[ Betreff (Subject) ]
[ Autor ]
Hallo Frank!
On 18 Jun 2004 at 9:24, Frank Immich wrote:
> Ich würde gerne aus einer Liste:
> z.b.
> 1,2,3,5,7,8,9,11
> einen String generieren, wobei fortlaufende Reihen zusammengefasst werden.
> -> "1-3,5,7-9,11"
>
Von mir noch eine eher 'textuelle', denn algorithmische Lösung, bei
der ich alle "-<zahl>-"-Folgen am Schluss lösche:
import re
l=[3,5,6,7,8,9,10,11,12,22,23,24,25,26,32,34,36,38,39,40,41,44,45,47]
l.sort()
r=""
for i in xrange(len(l)-1):
if l[i+1] - l[i] == 1: r += str(l[i])+"-"
else: r += str(l[i])+","
r += str(l[-1])
print r
r = re.sub(r"-(\d+-)+","-",r)
print r
Die Ausgabe wäre:
3,5-6-7-8-9-10-11-12,22-23-24-25-26,32,34,36,38-39-40-41,44-45,47
3,5-12,22-26,32,34,36,38-41,44-45,47
Ich erläutere den Regulären Ausdruck erstmal nicht, da Du damit ja
vielleicht vertraut bist.
Funktioniert nur für positive Ganzzahlen.
Jan
- Vorherige Nachricht: [Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nächste Nachricht: [Python-de] 1,2,3,5,7,8,9 -> "1-3,5,7-9"
- Nachrichten sortiert nach:
[ Datum ]
[ Thema ]
[ Betreff (Subject)]
[ Autor ]