2017-03-07 5 views
-1

Ich habe ein Programm, das Texteingabe nimmt und eine Liste von Wörtern speichert, die eingegeben wurden, aber ohne Duplikate. Ich muss diese in einer Datei speichern, also konvertiere ich sie in eine Zeichenkette und verbinde sie mit einem Komma zwischen jedem Wort.String separater

Jetzt, wenn es ein Komma in der Nähe eines Wortes gibt, würde es brechen. Ich brauche daher eine Zeichenfolge, um die Elemente einer Liste, die nicht Teil der Elemente ist, beizutreten.

Zum Beispiel, wenn ein Element "Hund" war, konnte die Zeichenfolge og nicht verwendet werden, so dass das Programm dies wissen und einen weiteren Buchstaben hinzufügen würde, um es zu einem einzigartigen Satz von Buchstaben zu machen.

Ich verkette diese Zeichenfolgen, um den eingegebenen Text neu zu erstellen, aber es funktioniert nur, wenn die Zeichenfolge, mit der ich sie teile, nicht Teil der Wörter ist.

Ich benutze @ # jetzt wie es unwahrscheinlich ist, dass in den eingegebenen Text sein wird, aber ich möchte es perfekt sein.

+0

Müssen Sie unbedingt so sein? Es gibt bessere Möglichkeiten zum Speichern von Listen als das Ableiten eines eigenen Trennzeichens. – Denziloe

+0

@Denziloe Ja leider ist es für einen Test, der spezifische Fähigkeiten prüft. Es tut uns leid. – SRawes

+0

Ich habe die Frage bearbeitet, um es auf den Punkt zu bringen. Wie wäre es mit '\ n'? –

Antwort

0

Verwenden Sie eine vorhandene Serialisierungsbibliothek, die Ihre Objekte in eine Zeichenfolge konvertiert, ohne dass Sie selbst einen Algorithmus erfinden müssen. Zum Beispiel, json:

>>> import json 
>>> my_strings = ["foo", 'ba"r', "ba,z", "qu'x", "[email protected]#rt"] 
>>> s = json.dumps(my_strings) 
>>> s 
'["foo", "ba\\"r", "ba,z", "qu\'x", "[email protected]#rt"]' 
>>> type(s) 
<class 'str'> 
>>> result = json.loads(s) 
>>> result 
['foo', 'ba"r', 'ba,z', "qu'x", '[email protected]#rt'] 
>>> type(result) 
<class 'list'> 
+0

danke und das würde funktionieren es ist nur ich muss es eine bestimmte Weise für einen Test tun. @Kevin – SRawes

+0

irgendwelche Ideen? Es würde wirklich helfen. Auch nicht ein Test mehr von einer Untersuchung, um zu sehen, wie gut wir es in der realen Welt tun können, so dass wir Experten fragen dürfen. @ Kevin – SRawes

+0

Nun, die einfache Lösung wäre, "\ n" als Trennzeichen zu verwenden, seit denen Mit 'input()' können Sie nicht eingeben, also wissen Sie, dass keines Ihrer Wörter es enthalten wird. Wenn das unbefriedigend ist, würde ich einfach jedes mögliche Trennzeichen durchgehen, wie 'String importieren; importieren Sie Itertools; für i in itertools.count (1): für s in itertools.product (string.printable, repeat = i): ... 'bis ich ein Trennzeichen gefunden habe, das in keinem Wort existiert. (Aber das wirft die Frage auf, wenn Sie die Datei lesen, wie sagen Sie, welches Trennzeichen Sie beim Schreiben der Datei verwendet haben?) – Kevin