Я получаю синтаксическую ошибку в своем операторе IF, не знаете почему?
Я пытаюсь запустить следующий код в Python 3.7. Я продолжаю получать неверную синтаксическую ошибку и не уверен, почему, кто-то может определить, что я делаю неправильно? Отступ, кажется, в порядке, мои "Отпечатки" заключены в правильные скобки, я верю, но я полностью потерялся в утверждениях "если" и "еще".
class pdfPositionHandling:
def parse_obj(self, lt_objs):
# loop over the object list
for obj in lt_objs:
if isinstance(obj, pdfminer.layout.LTTextLine):
print ("%6d, %6d, %s" % (obj.bbox[0], obj.bbox[1], obj.get_text().replace('\n', '_'))
# if it's a textbox, also recurse
if isinstance(obj, pdfminer.layout.LTTextBoxHorizontal):
self.parse_obj(obj._objs)
# if it's a container, recurse
elif isinstance(obj, pdfminer.layout.LTFigure):
self.parse_obj(obj._objs)
def parsepdf(self, filename, startpage, endpage):
# Open a PDF file.
fp = open(filename, 'rb')
# Create a PDF parser object associated with the file object.
parser = PDFParser(fp)
# Create a PDF document object that stores the document structure.
# Password for initialization as 2nd parameter
document = PDFDocument(parser)
# Check if the document allows text extraction. If not, abort.
if not document.is_extractable:
raise PDFTextExtractionNotAllowed
# Create a PDF resource manager object that stores shared resources.
rsrcmgr = PDFResourceManager()
# Create a PDF device object.
device = PDFDevice(rsrcmgr)
# BEGIN LAYOUT ANALYSIS
# Set parameters for analysis.
laparams = LAParams()
# Create a PDF page aggregator object.
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
# Create a PDF interpreter object.
interpreter = PDFPageInterpreter(rsrcmgr, device)
i = 0
# loop over all pages in the document
for page in PDFPage.create_pages(document):
if i >= startpage and i <= endpage:
# read the page into a layout object
interpreter.process_page(page)
layout = device.get_result()
# extract text from this object
self.parse_obj(layout._objs)
i += 1
Я получаю следующую ошибку:
File "C:/Users/951298/Documents/Python Scripts/PDF Scraping/untitled1.py", line 12
if isinstance(obj, pdfminer.layout.LTTextBoxHorizontal):
^
SyntaxError: invalid syntax
Не уверен, почему его точка в толстой кишке в конце?
3 ответа
В строке 9 вы должны были ввести 3 скобки в конце, но у вас было только 2 из них. Добавьте еще одну скобку, и она будет работать нормально.
Вы забыли поставить конечную скобку в своем заявлении на печать. Это приводит к ошибке в следующей строке, потому что интерпретатор игнорирует символы новой строки при чтении кода в скобках. Фактически, единственная причина, по которой он вывел ошибку в строке 12, заключается в том, что if isinstance(obj, pdfminer.layout.LTTextBoxHorizontal):
is не является допустимым аргументом для передачи на печать.
Поэтому следующий код выдаст ошибку в строке 11.
bar = "a"
baz = "a"
def foo(msg, bar="\n"):
print(msg, end=bar)
if bar == baz:
foo("bar is equal to baz",
bar = baz
else: #Throws error here
foo("bar is not equal to baz")
#Not the best example, I know, sorry.
Странно, не правда ли? Обязательно взгляните на строку (и) над строкой, которая выдает ошибку. Это дает вам и контекст, и потенциальный ошибочный код. Вам особенно нужно следить за такого рода ошибками в языках программирования, которые требуют терминаторов новой строки.
В строке 9 у вас должно быть 3 завершающих скобки, но я также заметил, что у вас есть два оператора if и один оператор elif, но не более того, все они должны быть операторами if. Надеюсь, я помог!