如何解决正则表达式文件精炼程序?

时间:2014-10-02 10:13:09

标签: python regex csv file-io optparse

我想改进我的csv文件。

我导入了fileinput,optparse和re modules。

并加载一个csv文件,并设置一个单词是否不存在,删除它。

但是我收到了空白文件。

这是我的代码:

import fileinput
import optparse
import re

parser = optparse.OptionParser("usage%prog -d <directory>")
parser.add_option('-d', dest='directory', type='string', help='specify file path')

dname = options.directory

for line in fileinput.input(dname, inplace=1):
    if bool(re.match("\d\d\d\d",line)) == False:
        continue

我的csv文件包含如下:

2014,10,21....
2014,10,22....
asdfsadf

所以我想删除第3行。

我的代码有什么问题? 任何帮助都会非常感激。 非常感谢。

2 个答案:

答案 0 :(得分:0)

您随时都不会在磁盘上写任何内容。如果您正在寻找修改文件,则应该明确地执行此操作。您应该找到有关如何处理文件in the official doc的一些指示。

答案 1 :(得分:0)

我从未使用过fileinput和optparse库,但至于解决方案,如果我在你的位置,这就是我要做的事情。

import re
CSVFile = open("FILENAME.csv", "r")
CSVFile = CSVFile.read()  <-- forgot this before.
CSVFile = CSVFile.split("\n")
RM = re.compile("\d+")
Result = ""
for Row in CSVFile:
    for Col in Row.split(","):
        # Add it to the result if it is number
        if RM.match(Col):
            Result += Col+","
        # Remove the data
        else:
            pass
CSVFile.write(Result)
CSVFile.close()

有关正则表达式库的更多信息,请参阅https://docs.python.org/2/library/re.html