2017-02-13 3 views
2

Meine Textdatei ein bestimmtes Wort in einer bestimmten Zeile ändern sieht wie folgt aus:Wie in einer Textdatei

Fjodor Dostojevski|Zlocin i kazna|1866|9788897572657|roman|4500|50|true| 
Dragoslav Mihajlovic|Kad su cvetale tikve|1968|3332221115554|drama|3000|20|true| 
Viliam Sekspir|Hamlet|1600|3214569879878|drama|6500|60|true| 

ich für die die Anzahl wie 9788897572657 oder 3332221115554, und wenn die Zahl in ist suchen müssen Linie, dann ändern Sie das Wort true zu false in dieser Zeile.

Antwort

1

Hier ist ein Code, der Ihre Zeilen verarbeiten wird. Für jede Zeile in den Daten, wird sie:

  1. die Linie auf dem
  2. Check | teilen, wenn das betreffende Feld in der Probe vorhanden ist set
  3. falls vorhanden, legt false.
  4. die Zeile zurück, zusammen mit einem join
  5. es in die Ausgabeliste hinzufügen

Code:

# build a set of the keys we will look for 
looking_for = {"9788897572657", "3332221115554"} 

output_data = [] 
for line in test_data: 
    fields = line.split('|') 
    if fields[3] in looking_for: 
     fields[7] = 'false' 
    output_data.append('|'.join(fields)) 

for line in output_data: 
    print(line) 

Testdaten:

test_data = [x.strip() for x in """ 
    Fjodor Dostojevski|Zlocin i kazna|1866|9788897572657|roman|4500|50|true| 
    Dragoslav Mihajlovic|Kad su cvetale tikve|1968|3332221115554|drama|3000|20|true| 
    Viliam Sekspir|Hamlet|1600|3214569879878|drama|6500|60|true| 
""".split('\n')[1:-1]] 

Erzeugt:

Fjodor Dostojevski|Zlocin i kazna|1866|9788897572657|roman|4500|50|false| 
Dragoslav Mihajlovic|Kad su cvetale tikve|1968|3332221115554|drama|3000|20|false| 
Viliam Sekspir|Hamlet|1600|3214569879878|drama|6500|60|true|