F:盘的“北交所招股说明书”文件夹下面有很多个PDF文件,但是下载的时候只是根据URL中的文件地址来命名,只是一串数字,看不出和内容的关系。
打开PDF文件,共同的规律是第一行都是:证券简称:XXXX,证券代码:XXXX,现在希望所有PDF文件都按照证券简称来重命名。
在中输入提示词:
写一段程序:
F:盘的“北交所招股说明书”文件夹中有很多个PDF文件,读取这些PDF文件的第一页内容;查找“证券简称:”,提取其后面的6个字符,去掉开头的空格,作为PDF文件的文件名;
然后对pdf文件进行重命名,在重命名文件之前先关闭文件。
注意:每一步都要输出信息
程序运行后,大部分PDF文件正确重命名,但是个别显示:未找到证券简称:.pdf。打开PDF文件一看,第一页是图片格式。这时候就需要用到OCR技术来实现图片中识别文字了。具体实现参考之前的文章《零代码编程:用批量识别图片PDF中的文字》
还有一些,命名也不太正确,比如特瑞斯证券:多了“证券”这两个字。
这种情况是怎么回事?
先让把提取出来的文本保存下来,在中输入提示词:
写一段程序:
F:盘的“北交所精选层招股说明书”文件夹中有很多个PDF文件,读取这些PDF文件的第一页内容;
内容保存到txt文本,然后进行打印输出
注意:每一步都要输出信息
可以看到,正常读取的文本是这样的:
证券简称: 吉冈精密 证券代码:
但是个别是这样的:
1-1-1证券简称:华维设计证券代码:
证券简称:吉林碳谷 证券代码:
这就导致重命名时出现错误。
怎么提取证券名称,继续问:
“””证券简称: 吉冈精密 证券代码:
但是个别是这样的:
1-1-1证券简称:华维设计证券代码:
证券简称:吉林碳谷 证券代码:”””
以上是多个PDF文件的第一页内容,我想从中提取出华维设计、吉林碳谷、吉冈精密这些字符,该如何用来实现?给出具体思路、方法和代码
可以看到,提取的核心在于正则表达式: = pile(r’证券简称:s*(.+?)s*证券代码’
# pile()解析:
# r表示原始字符串,不对字符串中的特殊字符转义
# 证券简称: 匹配字面文本“证券简称:”
# s* 匹配0个或多个空格
# (.+?) 第一个匹配组,匹配任意字符,采用非贪心匹配
# s* 匹配0个或多个空格
# 证券代码 匹配字面文本“证券代码”
这段代码使用正则表达式匹配文本中介于“证券简称:”和“证券代码”之间的证券简称,采用非贪心匹配。
根据这个正则表达式,重写提示词:
写一段程序:
F:盘的“北交所招股说明书”文件夹中有很多个PDF文件,读取这些PDF文件的第一页内容;使用正则表达式 = pile(r’证券简称:s*(.+?)s*证券代码’,来提取出证券简称作为PDF文件的文件名;
然后对pdf文件进行重命名,在重命名文件之前先关闭文件。
注意:每一步都要输出信息
此时,全部文件正确重命名。