2017-03-03 8 views
-1

Ich habe eine lange Zeichenfolge wie folgt:Wie kann man mehrere Strings aus Strings entfernen oder übersetzen?

'[("He tended to be helpful, enthusiastic, and encouraging, even to studentsthat didn\'t have very much innate talent.\\n",), (\'Great instructor\\n\',), (\'He could always say something nice and was always helpful.\\n\',), (\'He knew what he was doing.\\n\',), (\'Likes art\\n\',), (\'He enjoys the classwork.\\n\',), (\'Good discussion of ideas\\n\',), (\'Open-minded\\n\',), (\'We learned stuff without having to take notes, we just applied it to what we were doing; made it an interesting and fun class.\\n\',), (\'Very kind, gave good insight on assignments\\n\',), (\' Really pushed me in what I can do; expanded how I thought about art, the materials used, and how it was visually.\\n\',) 

und ich will alles auf einmal [, (,“, \, \ n aus dieser Zeichenfolge entfernen Irgendwie habe ich es eines nach dem anderen tun, sondern immer. fehlgeschlagen mit '\ n' Gibt es eine effiziente Möglichkeit, all diese Zeichen oder Leerzeilen Symbole zu entfernen oder zu übersetzen? Da meine Senectiecs sind nicht lang, so dass ich nicht Wörterbuch Methoden wie frühere Fragen verwenden möchten.

+1

Mögliche Duplikat von [Python ersetzt mehrere str its] (http://stackoverflow.com/questions/6116978/python-replace-multiple-strings) – McGrady

+0

Wie bekommt man solche Strings? –

Antwort

0

Vielleicht könnten Sie Regex verwenden, um alle Zeichen zu finden, die Sie

s = s.strip() 
r = re.compile("\[|\(|\)|\]|\\|\"|'|,") 
s = re.sub(r, '', s) 
print s.replace("\\n", "") 

Ich habe einige Probleme mit dem „\ ersetzen möchten n "aber ersetzen nach der Regex ist auch leicht zu entfernen.

0

Wenn string ist ein korrekter Python - Ausdruck, dann können Sie literal_eval vom ast - Modul verwenden, um die Zeichenkette in Tupel zu transformieren, und danach können Sie jedes Tupel verarbeiten

from ast import literal_eval 


' '.join(el[0].strip() for el in literal_eval(your_string)) 

Wenn nicht, dann können Sie diese verwenden:

def get_part_string(your_string): 
    for part in re.findall(r'\((.+?)\)', your_string): 
     yield re.sub(r'[\"\'\\\\n]', '', part).strip(', ') 

''.join(get_part_string(your_string)) 
-2

Eine Lösung besteht darin, die ASCII-Tabellenwerte zu verwenden, im Grunde durchlaufen Sie nur die Zeichenfolge und dann, wenn das Zeichen aus der Zeichenfolge eines der Symbole [, (, ", \, \ n ist, ersetzen Sie es:

# s is your string 
for i in s: 
if (ord(i) == 91)|(ord(i)==10): 
    s=s.replace(i,'') 

ord ('[') = 91

ord ('\ n') = 10

es ist nicht der beste Ansatz, aber es wird die Arbeit erledigen.

+0

Ihr Code funktioniert nicht. Sie sollten es reparieren oder löschen. –

+0

Ich habe es bearbeitet und getestet und es funktioniert, ich habe nur für '[' und '\ n' implementiert: >>> s = '[] string \ n mit Symbolen \ n zu entfernen' >>> für i in s : \t if (ord (i) == 91) | (ord (i) == 10): \t \t s = s.replace (i, '') >>> s ‚] string mit Symbolen entfernt werden' – distrobyte

Verwandte Themen