我处理Word文件,收集存储在表格中的一些信息。最初,我有这个:
table = [[app.ActiveDocument.Tables(1).Cell(x, y).Range.Text[:-1]
for y in [3, 4]] for x in range(13, app.ActiveDocument.Tables(1).Rows.Count-2)]
这里我得到2d列表以进一步传递。但有时我会在一个文件中获得一组表。结构总是一样的,所以我可以使用
table += ['here's the same list as above with diffrent index in Tables']
使用新数据和return
附加我的列表。
所以代码现在是:
table = [[]]
for tab in app.ActiveDocument.Tables:
table += [[tab.Cell(x, y).Range.Text[:-1] for y in [3, 4]] for x in range(13, tab.Rows.Count-2)]
table.remove([])
但是pyCharm说,分配列表并不是让事情顺利进行的“好方法”。是否有更优雅的方法来创建列表并同时将其附加到循环中?我没有看到让Python知道我正在处理项目列表的方法,我不知道如何在table
的初始创建中打包这个循环。
答案 0 :(得分:1)
基本上你用table = [[]]
说的是"我有一个包含空列表的列表"。
使用table.remove([])
删除该空列表。这并没有真正为你的程序添加任何内容。
如果您执行table.remove([])
,则可以避免致电table = []
。
您在for循环中追加的列表不受此影响,问题/警告也应该消失。
答案 1 :(得分:0)
你可以使用列表理解,但看起来有点乱 -
table = [[[tab.Cell(x, y).Range.Text[:-1] for y in [3, 4]]
for x in range(13, tab.Rows.Count-2) ]
for tab in app.ActiveDocument.Tables ]