不同长度的数组到一个 CSV

2024-04-05

如果您有多个不同长度的数组,如何将它们导出到 powershell 中的单个 csv 中?

Array1 = 1,2,3 
Array2 = Bob,smithy,Alex,Jeremy 
Array3 = yes,no

输出 CSV



Number  Name  Valid 
———————————————————  
1      Bob    Yes  
2      Smithy no  
3      Alex
       Jeremy  

基本上每个数组都位于其自己的标题列中。

尝试过类似的线路

Array1 | Select-Object Number | export-csv -Path C:\Path

这适用于单一数组到单一 csv 文件

但如果我尝试

Array1, Array2, Array3 | Select-Object Number, Name, Valid | export-csv -Path C:\Path

我只得到标题名称,列中没有值


一种方法是使用for loop https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_for?view=powershell-7.2.

$Array1 = 1, 2, 3
$Array2 = 'Joe Bloggs', 'John Doe', 'Jane Doe'
$Array3 = 'Yes', 'No'

$export = for($i = 0; $i -lt [Linq.Enumerable]::Max([int[]] ($Array1.Count, $Array2.Count, $Array3.Count)); $i++) {
    [pscustomobject]@{
        Number = $Array1[$i]
        Name   = $Array2[$i]
        Valid  = $Array3[$i]
    }
}
$export | Export-Csv path\to\csv.csv -NoTypeInformation

另一个例子使用function https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_functions?view=powershell-7.2,逻辑或多或少是相同的,只是涉及更多开销,因为该函数可以处理来自管道的无限数量的数组。

function Join-Array {
    [CmdletBinding()]
    param(
        [parameter(ValueFromPipeline, Mandatory)]
        [object[]] $InputObject,

        [parameter(Mandatory, Position = 0)]
        [string[]] $Columns
    )

    begin {
        $inputDict = [ordered]@{}
        $index = 0
    }
    process {
        try {
            if ($MyInvocation.ExpectingInput) {
                return $inputDict.Add($Columns[$index++], $InputObject)

            }

            foreach ($item in $InputObject) {
                $inputDict.Add($Columns[$index++], $item)
            }
        }
        catch {
            if ($_.Exception.InnerException -is [ArgumentNullException]) {
                $errorRecord = [Management.Automation.ErrorRecord]::new(
                    [Exception] 'Different count between input arrays and Columns.',
                    'InputArrayLengthMismatch',
                    [Management.Automation.ErrorCategory]::InvalidOperation,
                    $InputObject
                )
                $PSCmdlet.ThrowTerminatingError($errorRecord)
            }
            $PSCmdlet.ThrowTerminatingError($_)
        }
    }
    end {
        foreach ($pair in $inputDict.GetEnumerator()) {
            $count = $pair.Value.Count
            if ($count -gt $max) {
                $max = $count
            }
        }

        for ($i = 0; $i -lt $max; $i++) {
            $out = [ordered]@{}
            foreach ($column in $inputDict.PSBase.Keys) {
                $out[$column] = $inputDict[$column][$i]
            }
            [pscustomobject] $out
        }
    }
}

使用起来非常简单,要加入/zip的数组可以通过pipeline https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_pipelines?view=powershell-7.2以及按位置定义的所需列名称:

$Array1 = 1, 2, 3
$Array2 = 'Joe Bloggs', 'John Doe', 'Jane Doe'
$Array3 = 'Yes', 'No'
$Array4 = 'hello', 'world', 123, 456

$Array1, $Array2, $Array3, $Array4 | Join-Array Number, Name, Valid, Test |
    Export-Csv path\to\csv.csv -NoTypeInformation
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不同长度的数组到一个 CSV 的相关文章

  • 将 LongBuffer/IntBuffer/ShortBuffer 转换为 ByteBuffer

    我知道一种将 byte short int long 数组转换为 ByteBuffer 的快速方法 然后获取字节数组 例如 要将字节数组转换为短数组 我可以这样做 byte bArray 1 0 0 0 0 0 0 0 1 0 0 0 0
  • 运行多个 powershell 命令

    我如何运行前导命令 例如set adserversettings当我在 C 中调用 powershell 命令时 现在它返回 0 个结果 这是我正在使用的代码 Command command1 new Command set adserve
  • PDO 从表中获取一列到一维数组中

    我对 PDO 和让它们与 MySQL 一起工作还很陌生 我似乎在插入新数据和检索单个结果方面进展顺利 但是我坚持了下来 我有一张由配料组成的桌子 我试图将所有配料放入一个数组中 我已经直接在 SQL 中运行查询 它显示了所有结果 但是使用
  • 获取数组中从右上角到左下角的所有对角线

    我试图存储矩阵中从右上角到左下角的所有对角线 并将它们存储在一个数组中 matrix array 2 0 0 2 3 0 0 3 3 0 0 2 0 0 0 0 预期产出 2 0 3 0 0 2 2 0 0 0 3 0 0 3 0 0 我试
  • Powershell,从txt文件读取并格式化数据(删除行,删除之间的空格)

    我对 powershell 真的很陌生 我想使用powershell读取txt文件并将其更改为其他格式 从 txt 文件中读取 设置数据格式 删除行 删除之间的空格 记录计数 T 000000002 9 个字符 然后将输出写入新文件 我两天
  • 将指针设置为任意维度数组?

    当我想初始化多维数组时 我通常只使用指针 例如 对于二维我使用 double array 对于三个我使用 double array 但是 我想根据指示维度的命令行参数设置一个多维数组 一旦你有了一个具有你想要的维数的变量 有没有办法设置任意
  • 从数组中输入多个数字,每个数字检查是否为整数

    每个人 我希望有人能帮我弄清楚C语言的一些东西 这是我第一次认真地做IT方面的作业 我没有经验 而且我正在电子学习中学习 所以老师的帮助不是很好 我需要用C语言开发控制台应用程序 用户需要输入10个整数 如果插入的数字不是整数 需要输出错误
  • Winform 启动后隐藏或最小化 powershell 提示符

    我编写了一个简单的 powershell 脚本来启动 winform 在 powershell 脚本中编写的 Winform 代码 例如 showContent ps1 文件 并显示一些内容 我需要在Winform启动后隐藏powershe
  • Foreach-object Parallel 块内的错误处理 - Powershell 7

    在下面的 Foreach Object Parallel 块中捕获错误的最佳方法是什么 因为将有三个单独的线程 运行空间运行并执行块中写入的代码 并且可能同时发生多个错误 异常 是否可以捕获列表 变量中的所有错误并在脚本执行结束时显示 1
  • C# 的 xml 序列化中是否有一个属性可以跳过空数组?

    C 的 xml 序列化中是否有一个属性可以跳过空数组 这将提高 xml 输出的可读性 好吧 你也许可以添加一个ShouldSerializeFoo method using System using System ComponentMode
  • 在 Swift 中初始化空字典数组

    我正在尝试在 Swift 中初始化空数组 对于字符串数组来说 这非常简单 var myStringArray String myStringArray a myStringArray b gt a b 对于整数 var myIntArray
  • 如何递归地将嵌套对象数组转换为平面对象数组?

    我有以下深度嵌套对象数组 const data name foo children count 1 name A count 2 name B name bar children count 3 name C children count
  • 如何计算Numpy数组中特定范围内的值?

    我有一个 NumPy 值数组 我想计算有多少个值在特定范围内 例如 x25 我已阅读有关计数器的信息 但它似乎仅对特定值有效 对值范围无效 我已经搜索过 但没有找到任何关于我的具体问题的信息 如果有人能指出我正确的文档 我将不胜感激 谢谢
  • 按共同日期对数组数据进行排序

    我有一个包含许多行和 3 列的 csv 文件 日期 代表和销售额 我想使用 Python 生成一个新数组 该数组按日期对数据进行分组 并且对于给定日期 按销售额对代表进行排序 例如 我的输入数据如下所示 salesData 201703 B
  • 为什么.net中的数组只实现IEnumerable而不实现IEnumerable

    我正在实现自己的 ArrayList 类 当我意识到这一点时 我感到很惊讶 public System Collections Generic IEnumerator
  • 按索引偶数或奇数将数组拆分为两个数组

    我有这个数组 array array a b c d e f g 我想根据索引是偶数还是奇数将其分成两个数组 如下所示 odd array a c e g even array b d f 提前致谢 一种解决方案 使用匿名函数和array
  • 将 Powershell 对象的类型名称从 PSCustomObject 更改为我选择的名称?

    我有一个使用自定义对象的脚本 我用这样的伪构造函数创建它们 function New TestResult trProps name repo vcs Skipped clean New StageResult This is anothe
  • 查找数组中的重叠数据

    我们正在编写一个 C 应用程序 它将有助于删除不必要的数据重复器 只有在以下情况下才可以移除中继器 all它接收到的数据被其他中继器接收 我们第一步需要做的事情解释如下 例如 我有 int 数组的集合 A 1 2 3 4 5 b 2 4 6
  • Err_Response_Headers_Multiple_Content_Disposition

    我需要导出 2csv单击一个按钮即可打开文件 下面是我生成2的代码csv files using System Data using System Data SqlClient using System Text using System
  • 如何在Powershell控制台中分配多行字符串

    当我在 powershell 控制台中输入此内容时 test Test Test 并且输入多次 它会一直打印 gt gt 所以我永远无法完成命令 该怎么办 应该是行中的第一件事 或者它被认为只是字符串的一部分 test Test Test

随机推荐

  • 使用 python 将 tsv 文件转换为 xls/xlsx

    我想将 tsv 格式的文件转换为 xls xlsx 我尝试使用 os rename sample tsv sample xlsx 但转换后的文件已损坏 还有其他方法吗 这是一个使用 TSV 转换为 XLSX 的简单示例XlsxWriter
  • Android - 使用应用程序上下文创建 WebView 后如何将其附加到 Activity

    我正在使用应用程序上下文在后台创建一个 Android WebView 以便在我需要显示它时加载并准备好它 当需要时 我使用 addView 将其附加到我的 Activity 中 这通常工作得很好 但是当我尝试打开 HTML 选择下拉列表时
  • 将文本输入滑动窗口并进行计数

    我有这样的文件 超过 1 个缺少行 20 14370 rs6054257 G A 29 PASS NS 3 DP 14 AF 0 5 DB H2 GT GQ DP HQ 0 0 48 1 51 51 20 17330 T A 3 q10 N
  • 通过点击表格行触发jquery

    我喜欢在表格中有一行使其可点击 而不仅仅是行中的文本 因此我使用以下代码使其打开另一个页面 td 但是现在我使用 jquery 和下面的代码在 div 中而不是在新页面中打开新页面 我将如何更新我的行代码以打开 div 中的内容而不是在新页
  • mod_rewrite 用名称替换 ID

    我的网站上有一个动态显示内容的页面 网址结构是mywebsite com giveaway giveaway php id any number 我希望将该动态 URL 更改为静态 友好 URLmywebsite com giveaway
  • PageNumberPagination 和没有固定顺序的查询集

    根据文档 http www django rest framework org api guide pagination pagenumberpagination 当使用继承自的类时 无需任何特殊即可启用分页GenericAPIView 我
  • 使用 ajax 发布时的 net::ERR_EMPTY_RESPONSE

    你好 我正在尝试逐个上传 xlsx 文件 以便我可以显示状态栏 问题是 我使用 for 循环和 while 循环通过 ajax 发送请求来做到这一点 但是当位于第 40 个元素时 它会停止并且控制台显示 POST site php net
  • Android:当片段更改时如何重新创建操作栏

    我有一个活动显示一些片段 Activity 视图仅包含使用自定义 FragmentPagerAdapter 初始化的 ViewPager 该适配器提供 3 个片段之间的导航 除了操作栏之外 一切似乎都工作正常 我在片段中重写 onCreat
  • Chrome 扩展:每个选项卡的存储空间

    我想将扩展的状态存储在单个文件中而不是存储在单个文件中chrome storage但每个选项卡 扩展是关于在任何页面上制作网格系统覆盖 并希望存储每个选项卡的最新更新 这里是一些代码 popup js function let gridTo
  • Android 中触摸时可以模糊部分图像吗?

    我想模糊图像视图上的特定区域 例如 我想允许用户在android中绘制类似于裁剪的矩形 一旦用户在图像上绘制该矩形 矩形内的区域将变得模糊 或手指触摸 我搜索了很多 但大多数示例都解释了如何模糊完整图像 找不到任何解释如何仅模糊某些部分的教
  • php preg_grep 和元音变音/重音

    我有一个由术语组成的数组 其中一些包含重音字符 我像这样做了 preg grep data array Napol on Caf result preg grep input i data 因此 如果用户输入 le 我还希望结果 Napol
  • Visual Studio打开文件问题

    是否可以在 Visual Studio 2008 中打开项目 而不打开上次打开项目时先前打开的所有文件 我习惯在处理许多文件时保持打开状态 因此下次我打开项目时 它 非常缓慢 将一堆文件加载到编辑器中 我什至可能不需要打开它们 我已经搜索了
  • 如何减少 UNIX telnet 连接超时

    我有一个 unix shell 脚本 用于测试文件中列出的多个主机的 ftp 端口 for i in cat ftp hosts txt do echo QUIT telnet i 21 done 一般来说 这个脚本可以工作 但是如果我遇到
  • C++ 从 0:n-1 (n > k) 范围内随机采样 k 个数字,无需放回

    我正在致力于将 MATLAB 模拟移植到 C 中 为此 我尝试复制 MATLABrandsample 函数 http www mathworks com help stats randsample html 我还没有找到有效的方法来做到这一
  • 当键具有无效名称时的 TypedDict

    如果我的字典中有一个带有无效标识符的键 例如A 2 我怎样才能创建一个TypedDict与这个领域 E g from typing import TypedDict class RandomAlphabet TypedDict A 2 st
  • PHP 文件是否有可能在执行时删除自身?

    我有一个 PHP 文件 安装 php 它处理其他脚本的安装 我希望该文件在运行后删除自身及其包含的文件夹 这可能吗 假设该文件夹仅包含 install php 的演示 mkdir demo cd demo echo
  • GetSystemMetrics 和 TScreen 返回错误值

    我使用的是德尔福XE5 我认为我的笔记本电脑有问题 一段时间后 它向 Screen Width 和 GetSystemMetrics SM CXSCREEN 返回错误的值 高度相同 我的操作系统是 Windows 7 64 位 我的笔记本电
  • 以编程方式将证书安装到 Mozilla 中

    有没有办法以编程方式将证书安装到 mozilla 中 我们正在尝试编写所有内容的脚本来消除环境偏差 因此通过 mozilla 首选项手动安装它无法满足我们的需求 我认为有一种方法可以使用 certutil 来做到这一点 但我不确定 Mozi
  • 如何存储类内函数之间使用的 cookie jar?

    我想听听您关于如何有效存储 cookie 的建议 这些 cookie 将在类中由其他函数使用 我当前的代码如下所示 class SomeClass def init self username password self logged in
  • 不同长度的数组到一个 CSV

    如果您有多个不同长度的数组 如何将它们导出到 powershell 中的单个 csv 中 Array1 1 2 3 Array2 Bob smithy Alex Jeremy Array3 yes no 输出 CSV Number Name