我的 IF 语句出现语法错误,不知道为什么?
I'm getting a syntax error on my IF statement, not sure why?
我正在尝试 运行 python 3.7 中的以下代码。我不断收到无效的语法错误,但不确定为什么,有人可以发现我做错了什么吗?缩进似乎没问题,我相信我的 "Prints" 在正确的括号中,但我完全迷失了 "if" 和 "else" 语句。
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
不确定为什么它指向末尾的冒号?
在第 9 行中,你应该在最后键入 3 个括号,但你只有 them.Add 个括号中的 2 个,它会正常工作。
您忘记在打印语句中放置结束括号。这会导致下一行出错,因为解释器在读取括号内的代码时会忽略换行符。事实上,它在第 12 行抛出错误的唯一原因是 if isinstance(obj, pdfminer.layout.LTTextBoxHorizontal):
不是传递给打印的有效参数。
因此,以下代码将在第 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语句。希望我有所帮助!
我正在尝试 运行 python 3.7 中的以下代码。我不断收到无效的语法错误,但不确定为什么,有人可以发现我做错了什么吗?缩进似乎没问题,我相信我的 "Prints" 在正确的括号中,但我完全迷失了 "if" 和 "else" 语句。
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
不确定为什么它指向末尾的冒号?
在第 9 行中,你应该在最后键入 3 个括号,但你只有 them.Add 个括号中的 2 个,它会正常工作。
您忘记在打印语句中放置结束括号。这会导致下一行出错,因为解释器在读取括号内的代码时会忽略换行符。事实上,它在第 12 行抛出错误的唯一原因是 if isinstance(obj, pdfminer.layout.LTTextBoxHorizontal):
不是传递给打印的有效参数。
因此,以下代码将在第 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语句。希望我有所帮助!