使用多个和重复的分隔符拆分CSV文件中的列值

使用多个和重复的分隔符拆分CSV文件中的列值,csv,powershell,powershell-3.0,Csv,Powershell,Powershell 3.0,我有一个乱七八糟的CSV文件。我正在尝试使用正则表达式从csv文件的列中的值中提取名字和姓氏。名字和姓氏将有自己的列 CSV文件(具有不同的分隔符组合): 当我运行这段代码时,所有的名字值都应该是John,所有的姓氏值都应该是Doe。但是,这些值对于所有人来说都是非常不同的。您的想法太复杂了。从Description字段的末尾删除附加信息以仅获取名称,然后修剪名称并将其拆分为名字和姓氏,然后将其作为新属性添加到输入对象中 试试这个: Import-Csv 'C:\path\to\input.cs

我有一个乱七八糟的CSV文件。我正在尝试使用正则表达式从csv文件的列中的值中提取名字和姓氏。名字和姓氏将有自己的列

CSV文件(具有不同的分隔符组合):


当我运行这段代码时,所有的名字值都应该是John,所有的姓氏值都应该是Doe。但是,这些值对于所有人来说都是非常不同的。

您的想法太复杂了。从
Description
字段的末尾删除附加信息以仅获取名称,然后修剪名称并将其拆分为名字和姓氏,然后将其作为新属性添加到输入对象中

试试这个:

Import-Csv 'C:\path\to\input.csv' | ForEach-Object {
  $rawname = $_.Description -replace '-[^-]*-[^-]*$'
  $firstname, $lastname = $rawname.Trim() -split ' *[ \?\.,-] *'
  $_ | Add-Member -Type NoteProperty -Name FirstName -Value $firstname
  $_ | Add-Member -Type NoteProperty -Name LastName -Value $lastname
  $_
} | Export-Csv 'C:\path\to\output.csv' -NoType

你的想法太复杂了。从
Description
字段的末尾删除附加信息以仅获取名称,然后修剪名称并将其拆分为名字和姓氏,然后将其作为新属性添加到输入对象中

试试这个:

Import-Csv 'C:\path\to\input.csv' | ForEach-Object {
  $rawname = $_.Description -replace '-[^-]*-[^-]*$'
  $firstname, $lastname = $rawname.Trim() -split ' *[ \?\.,-] *'
  $_ | Add-Member -Type NoteProperty -Name FirstName -Value $firstname
  $_ | Add-Member -Type NoteProperty -Name LastName -Value $lastname
  $_
} | Export-Csv 'C:\path\to\output.csv' -NoType

谢谢你,安斯加。你总是一个很大的帮助:)你可能不需要
$rawname
就可以逃脱:
$FirstName,$LastName,$null=$\u-split'[\s\?,-]'|?{$}
@ST8Z6FR57ABE6A8RE9UF如果不在一行中完成,阅读和理解起来会更容易。另外,这种拆分方式的缺点是无法处理多个名字或包含连字符的名字。谢谢Ansgar。你总是一个很大的帮助:)你可能不需要
$rawname
就可以逃脱:
$FirstName,$LastName,$null=$\u-split'[\s\?,-]'|?{$}
@ST8Z6FR57ABE6A8RE9UF如果不在一行中完成,阅读和理解起来会更容易。此外,这种拆分方式的缺点是,无法处理多个名字或包含连字符的名字。
Import-Csv 'C:\path\to\input.csv' | ForEach-Object {
  $rawname = $_.Description -replace '-[^-]*-[^-]*$'
  $firstname, $lastname = $rawname.Trim() -split ' *[ \?\.,-] *'
  $_ | Add-Member -Type NoteProperty -Name FirstName -Value $firstname
  $_ | Add-Member -Type NoteProperty -Name LastName -Value $lastname
  $_
} | Export-Csv 'C:\path\to\output.csv' -NoType