如何在使用python读取CSV文件时跳过空白行

如何在使用python读取CSV文件时跳过空白行,第1张

如何在使用python读取CSV文件时跳过空白

如果要跳过所有空格行,则应使用以下测试:

' '.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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5653628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存