对从Excel文件填充的嵌套元组使用join()

2024-05-29 03:06:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为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

如何分解元组以使其符合我的需要?你知道吗


Tags: nonecountdcexcelgc元组wbsht
1条回答
网友
1楼 · 发布于 2024-05-29 03:06:34

回答我自己的问题以备将来参考

作为Alex rightfully commentedRange对象不是元组。由于此对象是指向Excel工作表中单元格的直接活动链接,因此尝试更改此对象也会更改工作表。你知道吗

结果我在工作表中的行之间循环。然后我可以循环遍历这个迭代的范围,并将范围的值添加到列表中。此列表不再链接到Excel,因此可以轻松地进行更改。我必须去掉“None”(空单元格)和十进制值,您可以在下面的代码中看到它们。你知道吗

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

相关问题 更多 >

    热门问题