gpt4 book ai didi

string - 解析文件名中缺少的字符,就像正在读取/斜杠字符一样

转载 作者:行者123 更新时间:2023-12-02 23:24:20 25 4
gpt4 key购买 nike

计算机上的文件名如此命名

quant-ph9501001math9901001cond-mat0001001hep-lat0308001gr-qc0703001

but on http links filenames is / character included

quant-ph/9501001math/9901001cond-mat/0001001hep-lat/0308001gr-qc/0703001

I can't rename my files quant-ph9501001 into quant-ph/9501001 because / is an illegal character so I can't use my code correctly to parse and rename from syntax to script actions.

Syntax of my filenames following this pattern:

letters + 8 digitsletters + '-' + letters + 8 digits

I can change quant-ph9501001 to quant-ph_9501001, but I need to parse missing character in filenames as if reading / (slash character).

So if I have strings like

gr-qc0701001gr-qc_0701001

it should read like

quant-ph/9501001

My script don't working (no parsing) for gr-qc/0701001 because I can't rename filenames using illegal character. Error is 404.

iwr : The remote server returned an error: (404) Not Found.

If script works correctly PowerShell should be returns this string:

General Relativity and Quantum Cosmology (gr-qc)

and filename should be

Spectral Broadening of Radiation from Relativistic Collapsing Objects

My script is

    $list1 = @"
quant-ph9802001
quant-ph9802004
"@

$list2 = @"
quant-ph/9802001
quant-ph/9802004
"@

Write-Output "Adding forward slashes"
$list1 -split "`r`n" | % {
$item = $_.Trim()
$newItem = $item -replace '(.*)(\d{7})', '$1/$2'
Write-Output $("{0} ==> {1}" -f $item, $newItem)
}

Write-Output "Removing forward slashes"
$list2 -split "`r`n" | % {
$item = $_.Trim()
$newItem = $item -replace '(.*)/(\d{7})', '$1$2'
Write-Output $("{0} ==> {1}" -f $item, $newItem)
}

Function Clean-InvalidFileNameChars {
param(
[Parameter(Mandatory=$true,
Position=0,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[String]$Name
)

$invalidChars = [IO.Path]::GetInvalidFileNameChars() -join ''
$re = "[{0}]" -f [RegEx]::Escape($invalidChars)
$res=($Name -replace $re)
return $res.Substring(0, [math]::Min(260, $res.Length))
}

Function Clean-InvalidPathChars {
param(
[Parameter(Mandatory=$true,
Position=0,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[String]$Name
)

$invalidChars = [IO.Path]::GetInvalidPathChars() -join ''
$re = "[{0}]" -f [RegEx]::Escape($invalidChars)
$res=($Name -replace $re)
return $res.Substring(0, [math]::Min(248, $res.Length))
}


$rootpath="c:\temp2"

$rootpathresult="c:\tempresult"

$template=@'
[3] arXiv:1611.00057 [pdf, ps, other]
Title: {title*:Holomorphy of adjoint $L$ functions for quasisplit A2}
Authors: Joseph Hundley
Comments: 18 pages
Subjects: {subject:Number Theory (math.NT)}
[4] arXiv:1611.00066 [pdf, other]
Title: {title*:Many Haken Heegaard splittings}
Authors: Alessandro Sisto
Comments: 12 pages, 3 figures
Subjects: {subject:Geometric Topology (math.GT)}
[5] arXiv:1611.00067 [pdf, ps, other]
Title: {title*:Subsumed homoclinic connections and infinitely many coexisting attractors in piecewise-linear maps}
Authors: David J.W. Simpson, Christopher P. Tuffley
Subjects: {subject:Dynamical Systems (math.DS)}
[21] arXiv:1611.00114 [pdf, ps, other]
Title: {title*:Faces of highest weight modules and the universal Weyl polyhedron}
Authors: Gurbir Dhillon, Apoorva Khare
Comments: We recall preliminaries and results from the companion paper arXiv:1606.09640
Subjects: {subject:Representation Theory (math.RT)}; Combinatorics (math.CO); Metric Geometry (math.MG)
'@

#extract utils data and clean
$listbook=gci $rootpath -File -filter *.pdf | foreach { New-Object psobject -Property @{file=$_.fullname; books= ((iwr "https://arxiv.org/abs/$($_.BaseName)").ParsedHtml.body.outerText | ConvertFrom-String -TemplateContent $template)}} | select file -ExpandProperty books | select file, @{N="Subject";E={Clean-InvalidPathChars $_.subject}}, @{N="Title";E={Clean-InvalidFileNameChars $_.title}}

#build dirs and copy+rename file
$listbook | %{$newpath="$rootpathresult\$($_.subject)"; New-Item -ItemType Directory -Path "$newpath" -Force; Copy-Item $_.file "$newpath\$($_.title).pdf" -Force}

编辑:Kori Gill回答后错误仍然是404

http://i.imgur.com/ZOZyMad.png

问题是本地文件名和在线文件名之间的区别。我应该暂时在本地文件名中添加此非法字符,否则脚本不起作用。

最佳答案

我不能说我完全理解您的问题,但听起来您只需要将这些名称转换为具有或不具有正斜杠的格式即可。您提到8位数字,但示例中有7位数字。您可以根据需要进行调整。

我认为这样会帮助您...

$list1 = @"
quant-ph9501001
math9901001
cond-mat0001001
hep-lat0308001
gr-qc0703001
"@

$list2 = @"
quant-ph/9501001
math/9901001
cond-mat/0001001
hep-lat/0308001
gr-qc/0703001
"@

Write-Output "Adding forward slashes"
$list1 -split "`r`n" | % {
$item = $_.Trim()
$newItem = $item -replace '(.*)(\d{7})', '$1/$2'
Write-Output $("{0} ==> {1}" -f $item, $newItem)
}

Write-Output "Removing forward slashes"
$list2 -split "`r`n" | % {
$item = $_.Trim()
$newItem = $item -replace '(.*)/(\d{7})', '$1$2'
Write-Output $("{0} ==> {1}" -f $item, $newItem)
}

输出:
Adding forward slashes
quant-ph9501001 ==> quant-ph/9501001
math9901001 ==> math/9901001
cond-mat0001001 ==> cond-mat/0001001
hep-lat0308001 ==> hep-lat/0308001
gr-qc0703001 ==> gr-qc/0703001
Removing forward slashes
quant-ph/9501001 ==> quant-ph9501001
math/9901001 ==> math9901001
cond-mat/0001001 ==> cond-mat0001001
hep-lat/0308001 ==> hep-lat0308001
gr-qc/0703001 ==> gr-qc0703001

关于string - 解析文件名中缺少的字符,就像正在读取/斜杠字符一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40687989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com