Powershell 解析字符串内容的最佳方法

时间:2021-01-13 02:13:35

标签: powershell

我正在尝试解析网络请求。什么是最好的方法?获取变量到字符串数组还是对象数组?
webrequest 提供了一个字符串对象,但我不能按行拆分,因为有些行是多行的。 逗号分隔是最好的选择吗?我遇到了困难并且没有想法。

    $webresponse = (invoke-webrequest -Uri "https://docs.google.com/spreadsheets/d/e/2PACX-1vR99VhhEfs2VKo3FWuTqC66vEzlmiqAODGiAaicmswvyf3PdtOX2YYoP72ou52CdUpgqEbr9OAK6X0x/pub?output=csv").content

如果我用逗号分隔

$webresponse.Split(",")

我可以将它放入一个字符串数组中,但不确定下一步或即使这是完成此任务的最有效方法。 任何帮助将不胜感激 提前致谢

1 个答案:

答案 0 :(得分:4)

响应是 CSV,因为 URL 用 output=csv 参数表示。

使用 ConvertFrom-Csv cmdlet。

$webresponse = Invoke-Webrequest -Uri "https://docs.google.com/spreadsheets/d/e/2PACX-1vR99VhhEfs2VKo3FWuTqC66vEzlmiqAODGiAaicmswvyf3PdtOX2YYoP72ou52CdUpgqEbr9OAK6X0x/pub?output=csv"
$data = $webresponse.Content | ConvertFrom-Csv -Delimiter ","

$data 将是一个数组。

$data.Count
# 175

PowerShell 会默认假设 CSV 有标头,这里就是这种情况。

$data[0]
# Tweet                                       DateTime                   
# -----                                       --------                 
# SPOT PLATINUM FALLS OVER 5% TO $1,007.20/OZ January 11, 2021 at 08:25AM

$data[0].Tweet
# SPOT PLATINUM FALLS OVER 5% TO $1,007.20/OZ