zoukankan      html  css  js  c++  java
  • python写csv文件

    Python操作excel文件非常方便,可是当写入数据列数大于256列时就不支持了。所以必须写CSV替代。

    在此记录一下CSV文件的写入代码,注意utf-8编码哦!

    import sys
    reload(sys)
    sys.setdefaultencoding( "utf-8" )
    import xlrd
    import xlwt
    import csv
    
    file = open('my.csv', 'wb')
    file.write('xEFxBBxBF');
    csv_writer = csv.writer(file)
    
    actor_book = xlrd.open_workbook("actors.xls")
    actor_sheet = actor_book.sheets()[0]
    
    actor_dic = {}
    for row_index in range(0, actor_sheet.nrows):
        actor = actor_sheet.cell(row_index, 0).value
        if actor not in actor_dic.keys():
            actor_dic[actor] = {}
    
    actor_statistics_count_book = xlrd.open_workbook("count_statistics.xlsx")
    actor_statistics_count_sheet = actor_statistics_count_book.sheets()[0]
    column_write = False
    for actor_a in actor_dic.keys():
        csv_row_list = []
        actor_b_dic = {}
        csv_row_list.append(actor_a)
        matrix_column = 1
        csv_row_title_list = []
        csv_row_title_list.append("actors")
        for actor_b in actor_dic.keys():
            if (not column_write):
                csv_row_title_list.append(actor_b)
    
            matrix_count = 0
            for row_index in range(1, actor_statistics_count_sheet.nrows):
                actor1 = actor_statistics_count_sheet.cell(row_index, 0).value
                actor2 = actor_statistics_count_sheet.cell(row_index, 1).value
                if actor1 != actor_a and actor2 != actor_a:
                    continue
    
                if actor1 != actor_b and actor2 != actor_b:
                    continue
    
                if actor_a == actor_b and actor1 != actor2:
                    continue
    
                matrix_count += int(actor_statistics_count_sheet.cell(row_index, 2).value)
    
            csv_row_list.append(matrix_count)
        if not column_write:
            csv_writer.writerow(csv_row_title_list)
        column_write = True
        csv_writer.writerow(csv_row_list)


    接上篇,在运行这个文件的时候突然遇到一个莫名其妙的问题:“‘module’ object has no attribute 'writer'”,然后百度发现有哥们也遇到了相同的问题,是由于将另外的python文件命名为“csv.py”导致的!由于csv.py编译后会产生名为csv的module。而系统会默认在当前路径下去引入module,从而导致引入的此module非彼module!

    以后一定要注意不能瞎起名啊。。。

    CSV模块文档參考:http://docs.python.org/library/csv.html


  • 相关阅读:
    HDU 1452
    POJ 1845
    POJ 2992
    POJ 3358
    POJ 3696
    POJ 3090
    POJ 2478
    2016大连网络赛 Football Games
    2016大连网络赛 Function
    2016大连网络赛 Sparse Graph
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6921587.html
Copyright © 2011-2022 走看看