首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据公式提取特定页面?

如何根据公式提取特定页面?
EN

Stack Overflow用户
提问于 2019-06-12 15:39:57
回答 1查看 144关注 0票数 1

我试图从一个长达1000页的PDF中提取页面,但我只需要9,10,17,18,25,26,33,34,...etc模式的页面。这些数字可以用公式:pg = 1/2 (7 - 3 (-1)^n + 8*n)表示。

我试图定义公式并插入到tabula.read_pdf中,但我不知道如何定义'n‘变量,其中'n’的范围从0到25。现在我把它定义为一个清单,我认为这是问题所在.

代码语言:javascript
复制
n = list(range(25+1))
pg = 1/2 (7 - 3 (-1)^n + 8*n) 

df = tabula.read_pdf(path, pages = 'pg',index_col=0, multiple_tables=False)

在尝试执行时,我得到一个TypeError:'int‘对象不能在pg = 1/2 (7 - 3 (-1)^n + 8*n)上调用。如何定义变量,以便tabula提取符合公式条件的页面?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-12 16:21:42

公式为x =1/2(8n-3(-1)^n+ 7)

Step1:

代码语言:javascript
复制
pg = []  #Empty list to store the pages numbers calculated by formula
for i in range(1, 25+1):     # For 1000 pages pdf use 1000 instead of 25
    k = int(1/2*((8*n[i])-3*((-1)**n[i])+7))
    pg.append(k)

print(pg, end = '')  # This will give you list of page numbers

#[9, 10, 17, 18, 25, 26, 33, 34, 41, 42, 49, 50, 57, 58, 65, 66, 73, 74, 81, 82, 89, 90, 97, 98, 105]

第2步:

代码语言:javascript
复制
# Now run the loop through each of the pages with the table

df=pd.DataFrame([])
df_combine=pd.DataFrame([])

for pageiter in range(pg):
            df = tabula.read_pdf(path, pages=pageiter+1 ,index_col=0, multiple_tables=False, guess=False) #modify it as per your requirement
            df_combine=pd.concat([df,df_combine]) #you can choose between merge or concat as per your need

代码语言:javascript
复制
df_data = []
for pageiter in range(pg):
            df = tabula.read_pdf(path, pages=pageiter+1 ,index_col=0, multiple_tables=False, guess=False) #modify it as per your requirement
            df_data.append(df)

df_combine= pd.concat(df_data, axis=1)

创建公式https://www.wolframalpha.com/widgets/view.jsp?id=a3af2e675c3bfae0f2ecce820c2bef43的参考链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56565915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档