我是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