2017-10-16 24 views
0

Ich bin eine Zeichenfolge in Wörter Tokening und möchte dann jedes Wort entfernen, das eine Nummer enthält.Überprüfen Sie, ob ein Wort eine Nummer enthält

tokens = ['hello', 'world', '12', '1-3', '23''] 

Wie Sie sehen können, kommen die Zahlen in verschiedenen Formen. Die obigen drei sind nur Beispiele. Ich kann die Zeichenfolgenelemente durchlaufen und prüfen, ob eine Ziffer vorhanden ist, und diese Zeichenfolge entfernen. Das scheint jedoch nicht richtig zu sein.

Die isdigit() - Funktion funktioniert nicht für solche Nummernzeichenfolgen. Wie kann ich das erreichen?

Ziel: Jedes Token, das eine Ziffer enthält, sollte entfernt werden. mein aktueller Code ist so etwas wie das nicht die oben genannten Typen umgehen kann:

relevant_tokens = [token for token in tokens if not token.isdigit()] 
+6

[ 'relevant_tokens = [Token in Token für Token, wenn nicht (c.isdigit() für c in Token) ] '] (https://ideone.com/WYIxED)? –

+0

Dies kann Ihnen helfen: https://stackoverflow.com/q/30141233/5596800 –

+0

importieren re; Ergebnis = [Token für Token in Token wenn len (re.findall ("\ d +", Token)) == 0] – Silencer

Antwort

0
import re 
tokens = [token for token in tokens if not re.match('.*\d+', token)] 
+0

're.match ('\ d +', Token)' erkennt 'abc5' nicht. –

+0

Fixed, @ WiktorStribiżew – MohitC

+0

@MohitC bitte aktualisieren Sie Ihre Antwort auf der Grundlage der Vorschläge in den Kommentaren oben, damit ich es akzeptieren kann, vor allem von Wiktor. – utengr

Verwandte Themen