Отформатируйте строку чисел с помощью PowerShell - PullRequest
0 голосов
/ 04 августа 2020

Мне нужно взять число, например: 59.234, и сделать его 00: 59.234 и 1: 01.555 01: 01.555

Мне нужно выполнить это в столбце в файле csv.

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Если ваш входной файл csv выглядит примерно так:

"Something","Time","MoreStuff"
"whatever","59.234","whereever"
"etcetera","1:01.555","and so forth"

, вы можете использовать приведенный ниже код для форматирования значений времени по мере необходимости:

$csv = Import-Csv -Path 'D:\Test\thefile.csv'
$csv | ForEach-Object {
    # get the field to format. in this demo it is $_.Time
    $whole, $fraction = ($_.Time -replace '[:,]').PadLeft(8, '0') -split '\.'
    # overwrite the field with the formatted time string
    $_.Time = '{0}:{1}.{2}' -f $whole.Substring(0,2), $whole.Substring(2,2), $fraction.PadRight(3, '0')
}

# output on screen
$csv

# write to new file
$csv | Export-Csv -Path 'D:\Test\theNewfile.csv' -NoTypeInformation

Вывод на экран:

Something Time      MoreStuff   
--------- ----      ---------   
whatever  00:59.234 whereever   
etcetera  01:01.555 and so forth
0 голосов
/ 04 августа 2020

Это может быть не изящно, но может работать в зависимости от того, как выглядит формат, если у вас меньшее или большее число. Например. 1: 59.234 или просто 23.

$CSV | select-object @{ Name = "MyTimeSpan"; Expression = { [System.TimeSpan]::Parse(("00:00:" + $_.ColumnName).Substring(("00:00:" + $_.ColumnName).Length - 12,12)) }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...