我是Python新手。我有成千上萬的CSV文件,其中有一組文本在數字數據記錄後出現,我想刪除所有以文本開頭的行。例如:使用正則表達式從CSV文件中刪除包含最後一行的「字符串」
col 1 col 2 col 3
--------------------
10 20 30
--------------------
45 34 56
--------------------
Start 8837sec 9items
--------------------
Total 6342sec 755items
好的是,所有csv文件的文本都以column1中的「Start」開始。我寧願刪除之後的所有行,包括說「開始」的行。
這是我到目前爲止有:
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'的變量。你應該得到一個例外,並沒有寫入。你只是想在「開始」之後去掉所有的東西?你不需要csv。 – tdelaney
什麼是CSV的編碼?它是ASCII還是UTF-8? – tdelaney
我在代碼中添加了寫作者聲明。 CSV文件的編碼採用ASCII格式。 – SalN85