2016-05-02 12 views
1

Ich habe die folgende Liste: [['F', 'G', 'C'], ['S', 3, 7], ['C', 3, 'D ']]Python, entferne alle Zahlen von der Unterliste

Aber ich möchte haben: [[' F‘, 'G', 'C'] [ 'S'] [ 'C', 'D']]

die Elemente In der Liste sind alle str Objekte. Im Grunde stellt sich diese Frage, wie kann ich Python dazu bringen, eine Zahl zu erkennen, auch wenn sie als String gecastet wird?

+0

Wenn sie alle String-Objekte sind zeigen sie dann als so, zitieren Zitate um die Ints. –

+0

Die Antworten, die Sie sowohl hier als auch in Ihrer vorherigen Frage erhalten haben, können leicht angepasst werden, um zu überprüfen, ob die Zeichenfolge als int analysiert werden kann. Verwenden Sie anstelle von "isinstance" eine andere Funktion. Nachschlagen "python, wie man prüft, ob Zeichenkette die Nummer ist" oder so. –

Antwort

3

Sie benötigen eine verschachtelte list comprehension und isinstance():

>>> l = [['F', 'G', 'C'], ['S', 3, 7], ['C', 3, 'D']] 
>>> [[item for item in sublist if not isinstance(item, int)] for sublist in l] 
[['F', 'G', 'C'], ['S'], ['C', 'D']] 

Wenn Sie auch Ziffern innerhalb Strings verarbeiten müssen, str.isdigit() helfen würde:

>>> l = [['F', 'G', 'C'], ['S', '3', '7'], ['C', '3', 'D']] 
>>> [[item for item in sublist if not item.isdigit()] for sublist in l] 
[['F', 'G', 'C'], ['S'], ['C', 'D']] 
+0

Wenn ich das ausführe bekomme ich die selbe Liste wie ich angefangen habe, die Nummern werden nicht entfernt –

+0

aber wenn ich isinstance (item, int) zu isinstance (item, str) ändere wird alles entfernt. –

+0

@abcla Haben Sie den zweiten Teil der Antwort überprüft? Vielen Dank. – alecxe

Verwandte Themen