我有一个Excel文件
Arm_id DSPName DSPCode HubCode PinCode PPTL
1 JaVAS 01 AGR 282001 1,2
2 JaVAS 01 AGR 282002 3,4
3 JaVAS 01 AGR 282003 5,6
我想以Arm_id,DSPCode,Pincode
格式保存一个字符串。此格式是可配置的,即它可能更改为DSPCode,Arm_id,Pincode
。我把它保存在一个列表中,比如:
FORMAT = ['Arm_id', 'DSPName', 'Pincode']
如果FORMAT
是可配置的,那么如何读取具有指定名称的特定列的内容?
这就是我试过的。目前我可以读取文件中的所有内容
from xlrd import open_workbook
wb = open_workbook('sample.xls')
for s in wb.sheets():
#print 'Sheet:',s.name
values = []
for row in range(s.nrows):
col_value = []
for col in range(s.ncols):
value = (s.cell(row,col).value)
try : value = str(int(value))
except : pass
col_value.append(value)
values.append(col_value)
print values
我的输出是
[[u'Arm_id', u'DSPName', u'DSPCode', u'HubCode', u'PinCode', u'PPTL'], ['1', u'JaVAS', '1', u'AGR', '282001', u'1,2'], ['2', u'JaVAS', '1', u'AGR', '282002', u'3,4'], ['3', u'JaVAS', '1', u'AGR', '282003', u'5,6']]
然后我绕着values[0]
循环,试图找出values[0]
中的FORMAT
内容,然后得到values[0]
中Arm_id, DSPname and Pincode
的索引,然后从下一个循环中我知道所有FORMAT
因子的索引,从而知道需要得到哪个值。
但这是一个糟糕的解决方案。
如何在excel文件中获取具有名称的特定列的值?
回答有点晚,但使用pandas可以直接获得excel文件的一列:
因此,关键部分是获取头(
col_names = s.row(0)
),在遍历行时,跳过不需要的第一行for row in range(1, s.nrows)
-使用从1开始的范围(而不是隐式的0)完成。然后使用zip单步遍历以“name”作为列标题的行。这是一种方法:
您不必使用自定义类,只需使用
dict()
。但是,如果使用类,则可以通过点表示法访问所有值,如上图所示。下面是上面脚本的输出:
相关问题 更多 >
编程相关推荐