如果要跳过所有空格行,则应使用以下测试:
' '.isspace()。
由于您可能需要做的事情不只是将非空白行打印到控制台上(不需要使用CSV模块),因此这里是一个涉及DictReader的示例:
#!/usr/bin/env python# Tested with Python 2.7# I prefer this style of importing - hides the csv module# in case you do from this_file.py import * inside of __init__.pyimport csv as _csv# Real comments are more complicated ...def is_comment(line): return line.startswith('#')# Kind of sily wrapperdef is_whitespace(line): return line.isspace()def iter_filtered(in_file, *filters): for line in in_file: if not any(fltr(line) for fltr in filters): yield line# A dis-advantage of this approach is that it requires storing rows in RAM# However, the largest CSV files I worked with were all under 100 Mbdef read_and_filter_csv(csv_path, *filters): with open(csv_path, 'rb') as fin: iter_clean_lines = iter_filtered(fin, *filters) reader = _csv.DictReader(iter_clean_lines, delimiter=';') return [row for row in reader]# Stores all processed lines in RAMdef main_v1(csv_path): for row in read_and_filter_csv(csv_path, is_comment, is_whitespace): print(row) # Or do something else with it# Simpler, less refactored version, does not use withdef main_v2(csv_path): try: fin = open(csv_path, 'rb') reader = _csv.DictReader((line for line in fin if not line.startswith('#') and not line.isspace()), delimiter=';') for row in reader: print(row) # Or do something else with it finally: fin.close()if __name__ == '__main__': csv_path = "C:UsersBKA4ABTDesktopTest_SpecificationRDBI.csv" main_v1(csv_path) print('n'*3) main_v2(csv_path)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)