Как извлечь конкретные страницы на основе формулы? - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь извлечь страницы из PDF длиной 1000 страниц, но мне нужны только страницы с шаблоном [9,10,17,18,25,26,33,34, ... и т. Д.]. Эти числа могут быть представлены в формуле: pg = 1/2 (7 - 3 (-1)^n + 8*n).

Я попытался определить формулу и подключиться к tabula.read_pdf, но я не уверен, как определить переменную 'n', где 'n' находится в диапазоне от 0 до 25. Сейчас я определил ее как список, который я думаю, это проблема ...

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 извлекала страницы, которые соответствуют условию формулы?

1 Ответ

0 голосов
/ 12 июня 2019

Формула: x = 1/2 (8n - 3 (-1) ^ n + 7)

Шаг 1:

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:

# 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

ИЛИ

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

...