您可以在文件周围创建一个包装对象,在CSV阅读器看到它们之前剥去空间。这样,你甚至可以用cvs.DictReader使用csv文件。
import re
class CSVSpaceStripper:
def __init__(self, filename):
self.fh = open(filename, "r")
self.surroundingWhiteSpace = re.compile("\s*;\s*")
self.leadingOrTrailingWhiteSpace = re.compile("^\s*|\s*$")
def close(self):
self.fh.close()
self.fh = None
def __iter__(self):
return self
def next(self):
line = self.fh.next()
line = self.surroundingWhiteSpace.sub(";", line)
line = self.leadingOrTrailingWhiteSpace.sub("", line)
return line
然后使用它是这样的:
o = csv.reader(CSVSpaceStripper(filename), delimiter=";")
o = csv.DictReader(CSVSpaceStripper(filename), delimiter=";")
我硬编码";"
作为分隔符。将代码概括为任何分隔符作为练习留给读者。
这是使用'csv'模块的最佳解决方案。 'csv.reader()'函数返回的'Reader'类不会暴露在'csv'或'_csv'模块中,以允许覆盖它的'next()'方法。 – CivFan 2015-09-09 16:45:28