<p>(我正在使用openxmlsdk在IronPython中交互地处理WordprocessingDocument对象,但这实际上是一个通用的<a href="https://www.cnpython.com/qa/" class="inner-link">python问题</a>,应该适用于所有实现)</p>
<p>我正试图从一些Word文档中找出一些表格。对于每一张桌子,
我有一个迭代器给我表行对象。然后,我使用下面的生成器语句从每行获取一个单元格元组:</p>
<pre><code>for row in rows:
t = tuple([c.InnerText for c in row.Descendants[TableCell]()])
</code></pre>
<p>每个元组包含4个元素。现在,在每个元组的第<code>t[1]</code>列中,我需要对数据应用一个正则表达式。我知道元组是不可变的,所以我很乐意创建一个新的元组,或者以不同的方式构建元组。假定<code>row.Descendants[TableCell]()</code>返回一个迭代器,那么从迭代器构造元组的最Pythonic(或至少最简单的)方法是什么?我想修改返回的第<code>n</code>个元素?在</p>
<p>我现在的暴力方法是从左片(<code>t[:n-1]</code>)、在<code>t[n]</code>和右片(<code>t[n+1:]</code>)中修改的数据创建一个元组,但是我觉得<code>itertools</code>模块应该有一些东西可以帮助我。在</p>
<pre><code>def item(i, v):
if i != 1: return v
return strangestuff(v)
for row in rows:
t = tuple(item(i, c.InnerText)
for i, c in enumerate(row.Descendants[TableCell]())
)
</code></pre>