逐行解析文件路径的CSV [逻辑请求]

时间:2016-03-29 17:37:48

标签: csv vbscript logic pseudocode

我有一个棘手的数据集要解析,并且无法为它制定处理方法,而且几个失败的想法让我更加困惑......

CSV格式的样本数据 - 处理前

C:\User1\Videos\videos
10
C:\User1\Videos\videos
22
C:\User2\Videos\videos
8
C:\User2\Videos\videos
67
C:\User3\Videos\videos
18
C:\User3\Videos\videos
12
C:\User4\Videos\videos
90

我尝试在每个用户的视频目录中合并视频文件的长度,并输出每个用户的列表以及所有文件的总运行时间。

结果 - 处理后

C:\User1\Videos\videos
32
C:\User2\Videos\videos
75
C:\User3\Videos\videos
30
C:\User4\Videos\videos
90

我正在寻找伪代码或任何关于如何实现此结果的建议。我试图使用嵌套循环并没有成功,并且很难概念化其他解决方案。我在VBScript中写这个是为了方便在Windows中进行文件处理。

非常感谢您提前获得的帮助,感谢您提出的任何建议。

1 个答案:

答案 0 :(得分:1)

首先,这是一种行分隔格式,每条记录有两行  1:目录
 2:视频长度

其次,您只需要一个循环来读取文件的每一行并处理数据。

步骤

  1. Dim a dic var。设置dic = CreateObject(" Scripting.Dictionary")。
  2. 文件路径,用户密钥和长度值的暗淡变量
  3. 从文件中循环和读取行
  4. 在循环内部,读取第1行并识别用户的记录。 VBScript能够拆分字符串。基于该示例,如果想要聚合User1下的所有长度,则无论剩下的子文件夹是什么,然后拆分字符串并抓取第一个路径元素并将其用作用户密钥。您可以检查第二个元素是要过滤的视频等,或者使用更多元素作为键,或者在结果示例中表示使用完整字符串作为完全匹配的键。将用户密钥存储在本地变量中。
  5. 在循环内部,读取第二行并从第2行解析长度,以本地变量长度存储。
  6. 在循环内部,检查字典中是否存在密钥,然后如果是,则获取密钥的值并添加到长度,产生总和,添加密钥,求和字典。 " dic.Item(userkey)= sum"否则,如果它不存在则只需添加键,值" dic.Item(userkey)= value"
  7. 从步骤4开始重复直到文件结束
  8. 通过获取密钥然后打印每个密钥以及字典中的密钥值来从字典中列出项目。
  9. 存储在字典中的值可以是用于存储更多信息的Object。不要忘记错误处理。