re.findall () работал, но теперь не находит нужный мне шаблон - PullRequest
1 голос
/ 29 мая 2020

В предисловие Я работаю в Python 3.8.3 на windows 10 и использую slate3k для синтаксического анализа моего pdf

Я работаю над программой python, которая будет анализировать через PDF и выплюнуть определенный шаблон и создать для меня файл csv.

Однако, когда я пытаюсь найти шаблон с проанализированным текстом, я ничего не получаю.

Я взял пример некоторого проанализированного текста и присвоенного ему parsed

import re

parsed = '7\n\n8\n\n6\n\n1\n\n2\n\nF\n\nNOTES\n\n3\n\n4\n\n5\n\n7\n\n6\n\n5\n\n4\n\n3\n\nA\n\n8\n\nE\n\nD\n\nC\n\nB\n\nR\n\nV\nE\n\n.\n\nR\nD\n\nA\n\nW\n\nI\n\nN\n\nG\n\nN\n\nO\n\n.\n\nP\n\nL\n\nO\n\nT\n\nS\n\nC\n\nA\n\nL\n\nE\n\n:\n\n2\n\n1\n\nA\n\nB\n\nC\n\nD\n\nE\n\nREFERENCE DRAWINGS\n\nDATE\n\nREV.\n\nBY\n\nCHK. ENG. APP.\n\nD\n\nM\n\nY\n\nDESCRIPTION\n\n\n\nTITLE\n\nEQUIP. NO.\n\nSAP NO.\n\nDRAWN BY\n\nAPPROVED\n\nDRAWING NO.\n\nSCALE\n\nCHECKED BY\n\nPLANT AREA\n\nFILE NAME\n\nMICRO. REV.\n\nREV.\n\nG\n\nD\n\n0\n0\n\n-\n\nA\n\n-\n\n0\n4\n0\n1\n\n-\n\n1\n\nR\n\ne\n\nv\n\n5\n\nA\n\n1\n\nS\n\ni\n\nz\n\ne\n\n\n1B\n\nD\nD\n\n6\n8\n\n-\n\nL\n\n-\n\n0\n0\n9\n\n-\n\n1\n\n1\n\nB\n\n\n\nN.T.S.\n\n1\n\n:\n\n2\n\n\n\n-\n\n1A\n\n18\n\n02\n\n22\n\n\n\n\nSCALE - NTS\n\n1.\n2.\n81PEW1002, 81PEW1003 AND 81PEW1004 ARE.\n\n3.\n\n4.\n\n5.\n\nSCALE\n\n6.\n\n7.\n\n8.\n\n9.\n10.\n11.\n12.\n13.\n\n14.\n\n15.\n\n8\n\n1\n\nP\n( E\n\nE\nX I S\n\nW\n\n1\n0\nT I N\n\n0\n\n2 - 4\n\n2 "- C\n\nA\n\nJ\n\nG )\n\n8 1\n\nP\n( E\n\nE\nXI S\n\nW\n\n1 0 0 4-4 2"- C\n\nA J\n\nTI N\n\nG )\n\n3\n\nAREA LIMIT N 252510\nSIPHON C TIE IN DETAIL\n\nPL81-L-147-1\\/1210-1\n\nSCALE - NTS\n\n81PEW1002-42"-CAJ\n(EXISTING)\n\n2\n\nAREA LIMIT N 252497\nSIPHON B TIE IN DETAIL\n\nPL81-L-147-1\n\nSCALE - NTS\n\n81PEW1003-42"-CAJ\n(EXISTNG)\n\n8\n\n1\n\nP\n\nE\nX I S\n\nW\n\n1\n0\nT I N\n\n0\n\n3 - 4\n\n2 "- C\n\nA\n\nJ\n\n( E\n\nG )\n\n81PEW1004-42"-CAJ\n(EXISTING)\n\nDRAIN\n\nA\n\nDRAIN DETAIL\n\n-\n\nSCALE - NTS\n\nA\n\n-\n\nA\n\n-\n\nA\n\n-\n\n81PEW1002-42"-CAJ (SIPHON C)\n81PEW1003-42"-CAJ (SIPHON B)\n81PEW1004-42"-CAJ (SIPHON A)\n\n45°\n\nF\n\nL\n\nO\n\nW\n\nF\n\nL\n\nO\n\nW\n\nF\n\nL\n\nO\n\nW\n\nSIP\n\nH\n\nO\n\nN A\n\nSIP\n\nH\n\nO\n\nN B\n\nS I P\n\nH\n\nO\n\nN A\n\nTP\n05\n\nTP\n06\n\nF\n\nL\n\nO\n\nW\n\nF\n\nL\n\nO\n\nW\n\nF\n\nL\n\nO\n\nW\n\nTP\n03\n\nTP\n04\n\nTP\n02\n\nTP\n01\n\nS I P\n\nH\n\nO\n\nN B\n\nS I P\n\nH\n\nO\n\nN C\n\n5\n\n\n\n5\n\n\n\n5\n\n\n\nS\n\nI\n\nP\n\nH\n\nO\n\nN\n\nC\n\n4\n\n\n\n4\n\n\n\nE\n\nXI S\nA\n\nTI N\n\nG 4 8"\n\nC\n\nS I N\n\nG ( T\n\nY\n\nP .)\n\n4\n\n\nTEE\nDETAIL\n\nDRAIN\nSPOOL\n\n60°\n\nTYP.\n\nTEE\nDETAIL\n\nDRAIN\nSPOOL\n\n60°\n\nTYP.\n\nNOTE 14\n\nA\n\nR\n\nA\nE\n\nL\n\nI\n\nM\n\nI\n\nT\n\nE\n\n5\n8\n0\n8\n4\n1\n\nA\n\nR\n\nA\nE\n\nL\n\nI\n\nM\n\nI\n\nT\n\nE\n\n3\n9\n0\n8\n4\n1\n\nAREA LIMIT N 252504\n\nA\n\nR\n\nA\nE\n\nL\n\nI\n\nM\n\nI\n\nT\n\nE\n\n0\n9\n0\n8\n4\n1\n\nA\n\nR\n\nA\nE\n\nL\n\nI\n\nM\n\nI\n\nT\n\nE\n\n9\n9\n0\n8\n4\n1\n\nAREA LIMIT N 252517\n\nA\n\nR\n\nA\nE\n\nL\n\nI\n\nM\n\nI\n\nT\n\nE\n\n0\n2\n1\n8\n4\n1\n\nA\n\nR\n\nA\nE\n\nL\n\nI\n\nM\n\nI\n\nT\n\nE\n\n8\n2\n1\n8\n4\n1\n\nAREA LIMIT N 252459\n\nAREA LIMIT N 252467\n\nDRAIN\nSPOOL\n\nTEE\nDETAIL\n\n60°\n\nTYP.\n\nNOTE 15\n\nNOTE 15\n\nNOTE 15\n\nSEE MT81-L-PEW1003-1\n\nSEE MT81-L-PEW1002-1\n\nSEE MT81-L-PEW1004-1\n\nSEE MT86-L-PEW1218-1\n\nSEE MT86-L-PEW1217-1\n\nSEE MT86-L-PEW1216-1\n\nCUT BACK EXISTING INSULATION\nFOR INSTALLATION OF FLANGES\nAND TEE\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\x0c'
rawtags = re.findall(r'[0-9]+[A-Z]+-[0-9]+|[0-9]+[A-Z]+[0-9]{1-5}|[0-9]{3}[A-Z]+[0-9]+', parsed, re.I)
print(rawtags)

У меня этот шаблон работал на предыдущей итерации, но у меня здесь проблемы. Приветствуется любое понимание того, почему это не работает для меня сейчас.

Изменить:

Я ожидал список ['81PEW1002', '81PEW1003', '81PEW1004'... etc]

Есть два различные шаблоны, которые я пытаюсь уловить:

  1. ##XXX-#####
  2. ##XXX#####

1 Ответ

1 голос
/ 29 мая 2020

У вас был лишний минус - символ

rawtags = re.findall(r'[0-9]+[A-Z-]+[0-9]+|[0-9]+[A-Z-]+[0-9]{1-5}|[0-9]{3}[A-Z-]+[0-9]+', parsed, re.I)

Я думаю, что это то, что вы ищете. V / R Стивен М

...