有一个txt文件,包含零件图和装配图列表,通过shift+RMB -> 复制为路径获得。其大致结构(1200+行):
1 812.04.20.1062 - Кронштейн нижний (1370).pdf
812.04.29.0001А - подкладка под ключ.pdf
04.01 812.04.06.0100 СБ - Щит АВ (Ц 293).pdf
04.01 812.04.06.0100Б СБ - Щит 200-93 (Ц 293).pdf
04.01 812.04.06.0100Б - Щит АВ.pdf
04.01 812.04.06.0101Б - Щит Сенсорный.pdf
04.01.01 812.04.18.0101 (изм. 1) - Щит АВ (П Л 1100 244 Вент).pdf
04.01.01 812.24.01.0101 - Щит Сенсорный (500).pdf
04.01.02 812.04.06.0102 - Крепление Линзы Сенсора.pdf
我想制作一个包含字段的表:
- 序列号:以812开头,例如812.04.20.1062
- 名称:示例“底括号”
- 视图:某些图纸中的序列号后面有一个标签SB,这意味着该图纸是装配图,因此视图字段可以值为“SB”或“零件”
- 更改:在某些图纸中,有一个标记“更改 1” - 这意味着对图纸进行了更改,这也必须在单独的字段中考虑
- 提示:并非所有图纸都有它;它在末尾的括号中表示,例如“(P L 1100 244 Vent)”
标题中有一定的模式,但总的来说我做到了。这是我的实现:
with open('/content/drive/My Drive/ColabNotebooks/resources/details.txt', 'r') as file:
content = file.read().split('\n')
content = [(line[line.find('812'):]) for line in content]
for line in content:
serial_number = line[:line.find(' ')]
if line.find('СБ') == -1:
type_doc = 'Деталь'
else:
type_doc = 'СБ'
name = line[line.find('-') + 2:]
hint = name.find('(')
if hint == -1:
hint = 0
else:
hint = name[hint:]
name = name[:name.find('(')]
change = line.find('изм.')
if change == -1:
change = 0
else:
change = line[change:change + 6].rstrip(')')
print(f'{serial_number:15}|{name:20}|{type_doc:6}|{change:6}|{hint}')
结论:
812.04.81.1713 |Деталь| 0|Отбойник |(456)
812.04.02.1720 |СБ | 0|Вставка в отбойник |0
5-7秒处理了1200行,但我认为这是由于连接到googledrive(我在googlecolab中编写代码,因为没有办法在工作PC上安装环境)。我使用“全部替换”删除了 .pdf 扩展名和文件本身中的一些其他内容。
在我看来,这是某种怪物,我做了所谓的迎面而来的事情。有没有更简洁的方法?理想情况下使用 Pandas,这样我就可以将其全部写入 CSV。(我也想学习如何与 Pandas 一起工作)
您可以一次将整个源文件读入框架中,然后使用正则表达式对其进行解析。