首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从文本文件中提取字符串并使用它重命名文件?

如何从文本文件中提取字符串并使用它重命名文件?
EN

Stack Overflow用户
提问于 2017-07-26 01:59:19
回答 2查看 326关注 0票数 0

对于我正在工作的项目,我有数以千计的表单(.pdf),我需要使用表单中的内容来重命名。

到目前为止,我已经对它们运行了OCR,并将内容导出为文本文件。每个PDF表单都有一个同名的.txt文件,其中包含所有信息。我想使用powershell (如果可能)提取文本文件的特定部分来重命名PDF文件,但我不确定如何才能做到这一点。

为了更好地了解我正在处理的内容,pdf和文本文件(ex-12345.pdf和12345.txt)中包含的表单如下所示-

代码语言:javascript
运行
复制

选区: xxxyyyzzz

投票站: abc def ghi (001)

流: 123

代码语言:javascript
运行
复制

我需要做的是提取投票站名称并将pdf文件重命名为该名称。

"12345.pdf“-> "abc_def_ghi_(001).pdf”

所以我需要弄清楚如何从12345.txt中提取"station:“和"stream:”之间的字符串。但让事情变得更复杂的是,我想要从中提取字符串的文本文件在间距方面有一些不规则之处。

例如,在文本文件中,前面的表单可能如下所示-

代码语言:javascript
运行
复制

构造: xxxyyyzzz

polling stat i on: abc de f ghi (00 1)

S流: 12 3

代码语言:javascript
运行
复制

幸运的是,这些字母本身似乎是完好无损的。

因此,我想学习如何从这些文本文件中提取包含投票站名称的字符串,并使用它重命名相应的pdf文件。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2017-07-26 02:53:47

代码语言:javascript
运行
复制
'polling station: abc def ghi (001)' |
  Select-String ' station: (.+)' |
  ForEach-Object { "{0}.pdf" -f ($_.Matches[0].Groups[1].Value -replace ' ','_') }
# outputs 'abc_def_ghi_(001).pdf' 
票数 1
EN

Stack Overflow用户

发布于 2017-07-26 03:39:06

假设您知道每个“投票站”行上的行距是相同的,那么您可以删除所有的空格。然后裁剪掉不相关的部分,然后用substring()方法格式化您的行。

代码语言:javascript
运行
复制
$Text = 'constit uency: xxxyyyzzz

polling stat i on: abc de f ghi (00 1)

stream: 12 3'
$trimmed = $text -replace "\s",'' -replace '^.*pollingstation:','' -replace "stream:.*$",''
"$($trimmed.substring(0,3))_$($trimmed.substring(3,3))_$($trimmed.substring(6,3))_$($trimmed.substring(9,5)).pdf"

#Output: 'abc_def_ghi_(001).pdf'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45310551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档