Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
In [30]: from re import X, M, S
In [31]: s
Out[31]: u'Ich bin bin K\xe4se!'
In [32]: re.sub(r"(?P<word>\b\w+)\s+(?P<double>(?P=word))", r'\1', s, X|M|S)
Out[32]: u'Ich bin K\xe4se!'
(Den Namen hab ich nur gegeben, ums klarer zu machen, der ist unnötig...)
Also ich würde den import nicht so nutzten. Entweder re.X, re.M, re.S oder direkt in der RE hinterlegen, ich glaube das geht so: r"(?P<word>\b\w+)\s+(?P<double>(?P=word))(?xms)"
Raggi hat geschrieben:Wisst Ihr, wie man doppelte Wörter in unbekannter Reihenfolge ohne Leerzeichen löscht?
Wild geraten, aber bekommst du nicht vielleicht das, was du willst, wenn du alle Wörter suchst, und die dann in ein Set schmeist, so dass du keine Doppelten mehr hast? Oder gehts dir auch um die Reihenfolge und die "nichtwörter" im Text?
def delete_doublettes(line, separator='|'):
seen = set()
result = list()
for item in line.split(separator):
if item not in seen:
seen.add(item)
result.append(item)
return separator.join(result)
words = re.findall(r'(\w+)\s+(?xms)', foobar, re.UNICODE)
for word in words:
how_often = len(re.findall(word, s))
if how_often > 1:
s = re.sub(word, '', s, how_often-1)
€dit:
Das '\s' ersetzt man dann natürlich durch seinen eigenen seperator.
Und das '\w' durch...naja, was auch immer man als Wort erkannt haben will.