gpt4 book ai didi

python - 在从 Excel 范围填充的嵌套元组上使用 join()

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:44 24 4
gpt4 key购买 nike

我有一个名为 rng 的嵌套元组,它是从 Excel 工作表创建的:

from win32com.client import GetObject

exl = GetObject(None, "Excel.Application")
exl_wbs = exl.Workbooks
wb_names = [wb.Name for wb in exl_wbs]
sht = exl_wbs[1].Sheets(2)

lrow = sht.Cells(sht.Rows.Count, 1).End(3).Row
lcol = sht.Cells(1, sht.Columns.Count).End(1).Column
rng = sht.Range(sht.Cells(2, 1), sht.Cells(lrow, lcol))

print(rng)输出:

((2.0, 'I', None, 'AMC'), (2.0, 'I', None, 'DC-01'), (3.0, 'I', None, 'GC-01') #etc..

我试图将这个元组分解成单独的行,如下所示

(2.0, 'I', None, 'AMC')
(2.0, 'I', None, 'DC-01')
(3.0, 'I', None, 'GC-01')

我曾尝试使用 print("\n".join(map(str, rng))),但这会将每个项目放在一个新行中:

2.0
I
None
AMC
2.0
I
None
DC-01
3.0
I
None
GC-01

我该如何分解元组,使其结构符合我的需要?

最佳答案

回答我自己的问题以供将来引用

作为Alex rightfully commented , Range 对象不是元组。由于该对象是指向 Excel 工作表中单元格的直接事件链接,因此尝试更改该对象也会更改工作表。

我最终改为循环遍历工作表中的行。然后我可以遍历此迭代的范围并将范围的值添加到列表中。此列表不再链接到 Excel,因此可以轻松进行更改。我必须摆脱您可以在下面的代码中看到的“无”(空单元格)和十进制值。

for i in range(2, lrow + 1):
newrng = []
rng = sht.Range(sht.Cells(i, 1), sht.Cells(i, lcol))
for c in rng:
try:
float(str(c))
newrng.append(int(c))
except ValueError:
if str(c) == 'None':
newrng.append('')
else:
newrng.append(str(c))

关于python - 在从 Excel 范围填充的嵌套元组上使用 join(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57574044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com