【发布时间】:2015-08-17 17:04:54
【问题描述】:
问题
如何在维护数据的同时根据公式或子例程重新格式化未知的 CSV 列名(例如,通过运行修剪或正则表达式或其他方式将列 " Arbitrary Column Name " 重命名为 "Arbitrary Column Name")?
目标
我正在尝试或多或少地清理需要由现有 PowerShell 脚本处理的手工制作(或至少手工编辑)的 csv 文件中的列(名称)。在这种特定情况下,列中的空格可以通过调用[String]::Trim() 删除,或者可以使用适当的正则表达式忽略,但我无法在导入或处理时找到调用或使用这些技术的方法CSV。
短背景
过去,大多数文件和列都已正确输入 CSV,但最近在处理过程中删除了一些列;我确定这是因为文件包含一个空格(例如,Select-Object 被告知获取"RFC",但Import-CSV 检索到"RFC ",因此没有匹配匹配)。在这种情况下,告诉客户手动正确输入(虽然首选且更简单)不是一种选择。
考虑的选项
我可以手动处理文件的文本,但这是一种重新发明轮子的混乱且容易出错的方法。我想知道Select-Object 的语法是否允许对列名进行更柔和的匹配,但我找不到该信息。
我在概念上最接近的是在对Select-Object 的调用中使用计算属性来重命名列,但我只能找到将已知列重命名为另一个已知列的方法。因此,这将需要枚举列并将它们与预期的列名称完全匹配(首选)或更软匹配(例如在修剪或通过正则表达式匹配作为后备之后进行比较),然后创建名称映射集合以用于构造计算的属性从该信息中选择一个新对象。
这似乎可行,但它比我更喜欢它的工作,我不禁希望有一种我无法通过 Google 找到的更简单的方法。也许我应该试试 Bing?
【问题讨论】:
标签: powershell csv