Sagen wir, ich habe eine Datei input.txt dass genannt wie folgt aussiehtentfernen ungemischten Zahlen aus Datei
I listened to 4 u2 albums today
meet me at 5
squad 4ever
ich die Zahlen herausfiltern möchten, die auf ihre eigenen sind, so „4“ und „5“ sollte gehen aber "u2" und "4ever" sollten gleich bleiben. dh die Ausgabe sollte
I listened to u2 albums today
meet me at
squad 4ever
Ich habe diesen Code
for line in fileinput.input("input.txt", inplace=True):
new_s = ""
for word in line.split(' '):
if not all(char.isdigit() for char in word):
new_s += word
new_s += ' '
print(new_s, end='')
zu verwenden versucht, die ziemlich ähnlich ist der Code, den ich hier gefunden: Removing numbers mixed with letters from string
Aber statt des gewünschten Ausgangs Ich bekomme
I listened to u2 albums today
meet me at 5
squad 4ever
Wie Sie sehen können, gibt es zwei Probleme hier, zuerst nur die Die erste Zeile verliert die Ziffer, die ich verlieren möchte, "5" ist immer noch in der zweiten Zeile vorhanden. Das zweite Problem ist der zusätzliche Leerraum am Anfang einer neuen Zeile.
Ich habe eine Weile mit dem Code herumgespielt und stapeln overflow, kann aber nicht herausfinden, wo das Problem herkommt. Irgendwelche Einsichten?
Das Problem ist, dass das letzte Wort in der Zeile mit '\ n' endet. Dies ist keine Ziffer, also übergibt es die if-Anweisung, und der zusätzliche Platz ist, weil Sie jedes Mal ein Leerzeichen in der for-Schleife hinzufügen, einschließlich für das letzte Wort in der Zeile. – yinnonsanders