私はPythonを初めて使用しています。私は何千ものCSVファイルを持っています。そこには、数値データが記録された後に来るテキストのグループがあり、テキストで始まるすべての行を削除したいと思います。たとえば、正規表現を使用してCSVファイルから最後の行を含む「文字列」を削除する
col 1 col 2 col 3
--------------------
10 20 30
--------------------
45 34 56
--------------------
Start 8837sec 9items
--------------------
Total 6342sec 755items
すべてのcsvファイルのテキストは、「開始」列1で始まるのが良いことです。私は後で "スタート"と言う行を含め、すべての行を削除することをお勧めします。
import csv, os, re, sys
fileList = []
pattern = [r"\b(Start).*", r"\b(Total).*"]
for file in files:
fullname = os.path.join(cwd, file)
if not os.path.isdir(fullname) and not os.path.islink(fullname):
fileList.append(fullname)
for file in fileList:
try:
ifile = open(file, "r")
except IOError:
sys.stderr.write("File %s not found! Please check the filename." %(file))
sys.exit()
else:
with ifile:
reader = csv.reader(ifile)
writer = csv.writer(ifile)
rowList = []
for row in reader:
rowList.append((", ".join(row)))
for pattern in word_pattern:
if not (re.match(pattern, rowList)
writer.writerow(elem)
このスクリプトを実行した後、それは私に空白のcsvファイルを与える:ここで
は、私がこれまで持っているものです。どのようなアイデアを変更するか?
この例では、「writer」という名前の変数はありません。あなたは例外と何も書かれていないはずです。 'START'の後にすべてを取り除きたいだけですか?あなたはそれのためにCSVは必要ありません。 – tdelaney
CSVのエンコーディングとは何ですか?それはASCIIかUTF-8ですか? – tdelaney
コードにwriter文を追加しました。 CSVファイルのエンコーディングはASCII形式です。 – SalN85