【发布时间】:2018-08-18 10:45:05
【问题描述】:
我正在编写一个脚本,该脚本需要处理相同类型的文件,但在不同时间具有不同的内容。我有一个类似于以下示例的 CSV 文件。并非每个字段都可能包含值。
record,title,creator,date,subject,location
0,Title1,Creator1,2018-08-17,Subject1,Location1
1,Title2,Creator2,2018-08-17,,Location1
2,Title3,Creator3,,Subject2,Location2
我需要将此 CSV 从数据表转换为键值对列表,每条记录,仅当存在值时。标题将是通用的,field,value 为行中的每个键值对重复。例如:
record,field,value,field,value,field,value,field,value,field,value
0,title,Title1,creator,Creator1,date,2018-08-17,subject,Subject1,location,Location1
1,title,Title2,creator,Creator2,date,2018-08-17,location,Location1,,,
2,title,Title3,creator,Creator3,subject,Subject2,location,Location2,,,
我可以使用Import-CSV 读取 CSV,但我很难更改结构。我尝试过的每条路径都没有结果,与寻找解决方案一样。在这一点上,手动构建新的 CSV 似乎是最简单的,但这似乎不对,所以我想我会在这里问。谁能指出我正确的方向?
我可以在 StackOverflow 上找到很多 CSV、哈希表和键值对问题,但没有像这样的问题。
【问题讨论】:
-
您在第二个 CSV 示例中存在不一致。您显示除“记录”之外的所有内容的键/值。这是故意的吗?
-
是的,这是故意的。记录列是数字对象的标识符,键/值是元数据属性。我必须将从一个系统导出的数据表转换为一组键/值对,但仍与一条记录相关联。 (在 CSV 中。)
标签: powershell csv