Есть ли возможность сохранить выходные данные двух списков в отдельных значениях в списке?

#python #list

#python #Список

Вопрос:

введите описание изображения здесь

У меня есть следующий код:

 import os
import glob
directory = r'C:UsersMax12Desktopxmlpdfminerattachments'

files = list(glob.glob(os.path.join(directory,'*.*')))
print(files)
 

Затем я извлекаю текстовые значения этих PDF-файлов:

 lines = []

for file in files:
    with pdfplumber.open(file) as pdf:
        for page in pdf.pages:
            text = page.extract_text()
            for line in text.split('n'):
                print(line)
 

Мой вывод точен, но не в списке с двумя значениями..

Как я могу сохранить выходные данные значений списка в одном списке, чтобы я мог просматривать список?

Комментарии:

1. Вы хотите, чтобы вся ценность была в вашем объявлении lines=[] ?

2. Я хотел бы иметь общий вывод одного файла в одном элементе списка. А затем второй файл во втором элементе списка.

3. Это означает, что вы ищете строку в соответствии с номером страницы, например first page, first line , second page, second line , n page, n line . Я прав?

Ответ №1:

Вы можете просто сделать lines.append(line) вместо print

Если вам нужен список для каждой страницы, вы можете сделать:

 files_data = []

for file in files:
    with pdfplumber.open(file) as pdf:
        lines = []
        for page in pdf.pages:
            text = page.extract_text()
            for line in text.split('n'):
                lines.append(line)
        files_data.append(lines)
 

У вас будет вложенный список для каждого файла на files_data

Комментарии:

1. Спасибо, Джоак, однако я хотел бы иметь общий вывод одного файла в одном элементе списка. Теперь у меня есть только одна строка в первом элементе печати (строки [0]).

Ответ №2:

Вы можете добавить свою строку в lines список.

 lines = []

for file in files:
    with pdfplumber.open(file) as pdf:
        for page in pdf.pages:
            text = page.extract_text()
            for line in text.split('n'):
                lines.append(line)
 

Вы также можете сжать этот код в одну строку

 for line in text.split('n'):
   lines.append(line)
 

Сжатие кода

 lines=[ line for line in text.split('n')]
 

Комментарии:

1. Спасибо, Рекс, однако я хотел бы иметь общий вывод одного файла в одном элементе списка. Теперь у меня есть только одна строка в первом элементе печати (строки [0]).

Ответ №3:

Вы можете использовать понимание списка для создания списка для каждого файла и добавления списка в lines список:

 lines = []

for file in files:
    with pdfplumber.open(file) as pdf:
        lines.append([line for page in pdf.pages for line in page.extract_text().split('n')])