【Python】如何用python读取excel中的多行多列

因为需要读取LCZ分类Excel中的多标签,正在学习如何操作。记录一波~

1、要先学习怎么在pycharm上完成远程操作
Terminal

Python的交互式模式,可以直接输入代码,执行,并得到结果。

Python Console

命令行模式,与系统的CMD一样,运行各种系统命令。
感觉与ssh中直接运用Linux语法是一样的。

2、代码运行

借鉴代码连接:零基础使用Python读写处理Excel表格
pyhton版本:3.7
操作界面:pycharm
运行平台:远程GPU(太难了…一切尽在摸索之中)

先在Python Console中安装好库
pip install xlrd
运行读取代码
import xlrd

#打开excel文件
def open_excel(file='test.xlsx'):
    try:
        data = xlrd.open_workbook(file)
        return data
    except Exception as e:
        print(str(e))

#根据名称获取Excel表格中的数据   参数:file:Excel文件路径     colnameindex:表头列名所在行的索引  ,by_name:Sheet1名称
def excel_table_byname(file='test.xlsx',colnameindex=0,by_name='sheet1'):
    data = open_excel(file) # 打开excel文件
    table = data.sheet_by_name(by_name) #根据sheet名字来获取excel
    nrows = table.nrows #行数
    colnames = table.row_values(colnameindex) #某一行数据
    list = [] #装读取结果的序列
    for rownum in range(0,nrows): #遍历每一行的内容
        row = table.row_values(rownum) #根据行号获取行
        if row: #如果行存在
            app = [] #一行的内容
            for i in range(len(colnames)): #一列列地读取行的内容
                app.append(row[i])
            list.append(app) #装载数据
    return list

def main():
    tables = excel_table_byname()
    for row in tables:
        print(row)

if __name__=="_main_":
    main()
遇到的问题
  1. 代码运行没有错误,但是结果没有显示。
    解决方法:因为main的左右两侧也是要两个_ 的。
  2. 另一个报错:No sheet named <‘sheet1’>
    解决方法:把sheet1的名字改成别的就行了。
3、更新一下代码
import xlrd

def open_excel(file='wpaa.xlsx'):  #感觉最好用绝对路径,比相对路径更保险点
    try:
        data = xlrd.open_workbook(file)
        return data
    except Exception as e:
        print(str(e))


def excel_table_byname(file='wpaa.xlsx', colnameindex=0, by_name='Sheet1'):
    data = open_excel(file)  # 打开excel文件
    table = data.sheet_by_name(by_name)  # 根据sheet名字来获取excel
    nrows = table.nrows  # 行数
    colnames = table.row_values(colnameindex)  # 某一行数据
    list = []  # 装读取结果的序列
    for rownum in range(0, nrows):  # 遍历每一行的内容
        row = table.row_values(rownum)  # 根据行号获取行
        if row:  # 如果行存在
            app = []  # 一行的内容
            for i in range(len(colnames)):  # 一列列地读取行的内容
                app.append(row[i])
            list.append(app)  # 装载数据
    return list


def main():
    tables = excel_table_byname()
    list_image = []
    list_label = []
    list_label_1 = []
    for row in tables:
        list_image.append(row[2])
        for i in row[5:22]:
            if i == "null":
                list_label_1.append(0)
            else:
                list_label_1.append(1)
        list_label.append(list_label_1)
        list_label_1 = []

    return list_image, list_label


if __name__ == "__main__":
    image, label = main()
    print(image)
    print(label)

对行列读取中,只读取图片的路径与每个图片中的多标签。在17类标签中,当显示null则用0表示,反之显示为LCZ1、LCZ2、…、LCZG则显示为1。

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值