python - 创建一个修改了一个元素的新元组

标签 python iterator ironpython generator

(我正在使用 OpenXML SDK 在 IronPython 中与 WordprocessingDocument 对象交互工作,但这实际上是一个普遍的 Python 问题,应该适用于所有实现)

我正试图从大量 Word 文档中抓取一些表格。对于每张 table , 我有一个给我表行对象的迭代器。然后,我使用以下生成器语句从每行中获取单元格元组:

for row in rows:
    t = tuple([c.InnerText for c in row.Descendants[TableCell]()])

每个元组包含 4 个元素。现在,在每个元组的 t[1] 列中,我需要对数据应用正则表达式。我知道元组是不可变的,所以我很乐意创建一个新的元组,或者以不同的方式构建元组。鉴于 row.Descendants[TableCell]() 返回一个迭代器,从我想修改 n返回第一个元素?

我现在的蛮力方法是从左切片 (t[:n-1]) 创建一个元组,修改后的数据在 t[n] 和正确的切片 (t[n+1:]),但我觉得 itertools 模块应该可以帮到我。

最佳答案

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

关于python - 创建一个修改了一个元素的新元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1784478/

相关文章:

.net - DLR、Boo 和 JVM

python - 将 JSON 从文件加载到 Python 字典的正确方法

python - 找到在 Maya 中创建的最后一个窗口?

python - 为什么我的搜索功能不起作用?

java - 使用迭代器合并列表

c# - 使用 IronRuby 或 IronPython 修改 C# 对象列表

python - IronPython 中 urllib 的 PROTOCOL_TLS 错误

python - 如何删除 python pandas read_csv 中没有标题的列

c++ - 如何创建尾后迭代器?

c++ - 如何从数组类中删除元素