2017-07-21 2 views
0

Ich habe eine CSV-Datei, die etwa wie folgt aussieht:Wie kann ich diese Zeilen aus einem csv löschen, wenn es ein bestimmtes Wort enthält?

"Estimated 10:10 AM 
 
" \t "10:40 AM \t KL1973 \t 
 
" \t "Amsterdam (AMS) 
 
" \t "KLM \t B738 (PH-BXB) \t 
 
" 
 
"Scheduled 
 
" \t "10:50 AM \t AY753 \t 
 
" \t "Helsinki (HEL) 
 
" \t "Finnair \t A321 (OH-LZL) \t 
 
" 
 
"Estimated 10:49 AM 
 
" \t "10:50 AM \t W62282 \t 
 
" \t "Brussels (CRL) 
 
" \t "Wizz Air \t A321 (HA-LXS) \t 
 
" 
 
"Scheduled 
 
" \t "10:50 AM \t OS713 \t 
 
" \t "Vienna (VIE) 
 
" \t "Austrian Airlines \t DH8D (OE-LGL) \t 
 
" 
 
"Scheduled 
 
" \t "11:00 AM \t W62272 \t 
 
" \t "Eindhoven (EIN) 
 
" \t "Wizz Air \t A321 (HA-LXQ) \t 
 
"

Ich frage mich, wie eine Linie zu löschen, wenn sie das Wort „Scheduled“ enthalten?

Ich habe versucht, so etwas zu verwenden, aber es funktioniert nicht (Python 2.7). Keine Fehlermeldung, es läuft, aber nichts zu tun:

import urllib2 
 
import unicodecsv as csv 
 
import os 
 
import sys 
 
import io 
 
import time 
 
import datetime 
 
import pandas as pd 
 
from bs4 import BeautifulSoup 
 
import sys 
 
import re 
 

 
def to_2d(l,n): 
 
    return [l[i:i+n] for i in range(0, len(l), n)] 
 
    
 
f = open('air.txt', 'r') 
 
x = f.readlines() 
 

 
filename=r'output.csv' 
 

 
resultcsv=open(filename,"wb") 
 
output=csv.writer(resultcsv, delimiter=';',quotechar = '"', quoting=csv.QUOTE_NONNUMERIC, encoding='latin-1') 
 
    
 
maindatatable = to_2d(x, 4) 
 
print maindatatable 
 
output.writerows(maindatatable) 
 

 
resultcsv.close() 
 

 
open("output.csv", "r+") as f: 
 
t = f.read() to_delete = '"Scheduled' 
 
    f.seek(0) for line in t.split('\n'): 
 
    if line != to_delete: 
 
     f.write(line + '\n') f.truncate() 
 
Und plus 1 Frage. Wie kann ich die ersten 3 und die letzten 3 Zeilen in dieser CSV-Datei löschen?

Tut mir leid, wenn das wie eine wirklich einfache Frage scheint, aber ich bin neu bei Python und jede Hilfe in diesem Bereich wäre sehr dankbar, danke !!

+0

Verwenden regex für pattern-Matching –

Antwort

0

Sie haben Ihren Code nicht wie meine schreiben: du hast nicht identation respektieren und Sie nicht setzen „mit“ Wort vor offen (Datei ...

Bitte aktualisieren Sie mit diesem:

> with open("file.csv", "r+") as f: 
>  t = f.read() 
>  to_delete = '"Scheduled' 
>  f.seek(0) 
>  for line in t.split('\n'): 
>   if line != to_delete: 
>    f.write(line + '\n') 
>  f.truncate() 
+0

es funktioniert, aber es brach das cSV-Dateiformat. habe ich diese Informationen zu A1-A4, B1-B4, etc.and ich möchte die alle Zeilen löschen, die enthalten ist diese "Geplant". – tardos93

+0

Ich glaube, dass Sie CSV-Datei in Excel geöffnet? A1-A4, B1-B4 ist Excel-Format. Excel weiß, wie CSV-Format zu interpretieren. Aber Python tun nicht, es sei denn du wirst es lehren. – durduliu2009

+0

Yeah, ich öffnete es in Excel: D und mit diesem Teil habe ich 4 Spalten (maindatatable = to_2d (x, 4)) und ich denke, wenn ich eine Zeile in dieser CSV-Datei direkt löschen, löscht es die ganze Zeile, die enthält das "Geplant". Wie kann ich es "lehren", dies zu tun? – tardos93

Verwandte Themen