2017-06-26 1 views
-3

Ich habe Strings wie folgt aus:Wie kann ich nur Zeichenfolgen aus einer Zeichenfolge nehmen und eine neue Zeichenfolge in Python erstellen?

'0.013*"best" + 0.013*"like" + 0.013*"thing" + 0.009*"way" + 0.009*"moment"' 

Jetzt habe ich nur die Worte aus dieser Zeichenfolge nehmen wollen und einen Satz aus als neue komplette String zu bauen. Gibt es eine Möglichkeit, das in Python zu tun?

Edit: Ich verwende diese jetzt:

import re 
result = ''.join(i for i in s if not i.isdigit()) 
result = re.sub('\W+',' ', result) 

mein Ergebnis zu erhalten. Aber das fühlt sich wie eine suboptimale Lösung an. Also war auf der Suche nach einem One-Liner.

Dank

Antwort

2

Wenn Sie die Bits in Anführungszeichen aus der Zeichenfolge aufnehmen möchten, können Sie ein regular expression verwenden:

import re 
mystring = '0.013*"best" + 0.013*"like" + 0.013*"thing" + 0.009*"way" + 0.009*"moment"' 
words = re.findall('"([^"]+)"', mystring) 

Wenn Sie sie alle mit Leerzeichen anschließen möchten, können Sie join verwenden können:

joined = ' '.join(words) 
print (joined) 

In einer Zeile:

print (' '.join(re.findall('"([^"]+)"', mystring))) 

am besten wie Sache Weg Moment

+0

Ja. Das funktioniert. Vielen Dank! – 0x1

1

Sie haben Sie die Informationen in einer Reihe, so zu halten, oder fragen Sie, wie Sie einen Satz wie das im Allgemeinen bauen?

Weil Sie immer something like this tun konnte, und setzen Sie Ihre Gewichte in einer Liste:

strings = [(0.013, "best"), 
      (0.013, "like"), 
      (0.013, "thing"), 
      (0.009, "way"), 
      #... 
      ] 
next_word = random_choice_from_above_link(strings) 
+1

Das war nicht meine Absicht. Aber es gab mir eine neue Idee. Vielen Dank. – 0x1

Verwandte Themen