Форум сайта python.su
Здравствуйте!
Подскажите почему capitalize() не срабатывает и почему - то печатается два раза один и тот же код хотя принт указан единажды
import pdfplumber import re def extract_first(): pdf = pdfplumber.open("16.4.pdf") page = pdf.pages[0] text = page.extract_text() pattern = re.compile('../..../.........') result = pattern.findall(text) #print (text) name = re.findall('Наименование:(.+)', text) nazn = re.findall('Назначение:(.+)', text) ploshad = re.findall('Площадь, м²:(.+)', text) etash = re.findall('Количество этажей(.+)', text) adress = re.findall('Адрес(.+)', text) nomer = re.findall('Кадастровый номер:(.+)', text) input_str = (str (name) + "." " Назначение:" + str (nazn)+ "." + "Площадь:" + str (ploshad) +" кв.м." + " Количество этажей" + str (etash)+ "." + " Адрес" + str (adress)+ "." + " Кадастровый номер:" + str (nomer)+ "." ) for x, y in ("[",""),("]",""): input_str = input_str.replace(x, y) for i, j in ("'",""),("
",""): input_str = input_str.replace(i, j) for q, w in (";",""),("кр.","край"): input_str = input_str.replace(q, w) print(input_str.capitalize())
Офлайн
PSAS
Подскажите почему capitalize() не срабатывает и почему - то печатается два раза один и тот же код хотя принт указан единажды
input_str = input_str.capitalize() print(input_str)
Офлайн
Добрый день!
За цикл вынес - все ок 1 р. запускается.
Но буква первая не стала заглавной, а наоборот все стали маленькие.
import pdfplumber import re def extract_first(): pdf = pdfplumber.open("16.4.pdf") page = pdf.pages[0] text = page.extract_text() pattern = re.compile('../..../.........') result = pattern.findall(text) #print (text) name = re.findall('Наименование:(.+)', text) nazn = re.findall('Назначение:(.+)', text) ploshad = re.findall('Площадь, м²:(.+)', text) etash = re.findall('Количество этажей(.+)', text) adress = re.findall('Адрес(.+)', text) nomer = re.findall('Кадастровый номер:(.+)', text) input_str = (str (name) + "." " Назначение:" + str (nazn)+ "." + "Площадь:" + str (ploshad) +" кв.м." + " Количество этажей" + str (etash)+ "." + " Адрес" + str (adress)+ "." + " Кадастровый номер:" + str (nomer)+ "." ) for x, y in ("[",""),("]",""): input_str = input_str.replace(x, y) for i, j in ("'",""),("
",""): input_str = input_str.replace(i, j) for q, w in (";",""),("кр.","край"): input_str = input_str.replace(q, w) input_str = input_str.capitalize() print(input_str)
Офлайн
PSASЗначит, там в начале перед буквой какой-то символ.
Но буква первая не стала заглавной, а наоборот все стали маленькие.
>>> ' aaaBbbCCC'.capitalize() ' aaabbbccc' >>> >>> 'aaaBbbCCC'.capitalize() 'Aaabbbccc' >>>
PSASНадо так делать (если и искать таким образом)name = re.findall('Наименование:(.+)', text)
name = re.findall('Наименование:(.+)', text)[0]
Отредактировано py.user.next (Ноя. 14, 2021 09:31:37)
Офлайн
Здравствуйте!
Основная задача - создать программу, которая бы выбирала из файлов pdf в первую очередь (https://disk.yandex.ru/d/-cK-A-Ho-oe9aw - два файла для примера) необходимую информацию, а именно:
1) Делала из первого раздела (по земельному участку дополнительно берется 2 страница с указанием категории земельного участка) выписки из ЕГРН описание объекта последовательно (Наименование, Назначение, Площадь, Количество этажей, Адрес, Кадастровый номер), например,
Нежилое здание - склад горюче-смазочных материалов. Назначение: нежилое здание.Площадь: 16.4 кв.м. Количество этажей, в том числе подземных этажей: 1, в том числе подземных 0. Адрес: Российская федерация, Краснодарский край, Усть-лабинский район, ст-ца ладожская, ул.Коншиных, д.100. Кадастровый номер: 23:35:1006004:277.
При этом каждое предложение с заглавной буквы, в конце предложения ставится точка, если информация находится на двух строчках - это желательно надо проверить и добавить информацию из этой строчки тоже.
2) Также из 2 раздела http://prntscr.com/1zkgyd4 необходимо дополнительно составить информацию о наличии обременений, например,
Объект имеет следующие обременения:
“вид: Ипотека
дата государственной регистрации: 17.01.2018
номер государственной регистрации: 23:35:1006004:277-23/033/2018-3
срок, на который установлено ограничение прав и обременение объекта
недвижимости: с 17.01.2018 по 10.10.2020
лицо, в пользу которого установлено ограничение прав и обременение
объекта недвижимости: Акционерное общество Банк ”Северный морской путь“, ИНН: 7750005482
основание государственной регистрации: ‘Договор ипотеки (залога недвижимости) №0800100420.102017КЛ/ДИ-02’ от 12.01.2018”
и т.д.
Также желательно проверить и добавить информацию из следующей строчки если результирующая информация переносится на следующую строку.
3) Сохранить эту информацию в файл либо в шаблон вордовского документа в соответствующие поля
В папке где хранится программа добавляются несколько пдф файлов из которых последовательно выбирается указанная информация, также берется определенная информация из реквизитов ЕГРН в части указания номера выписки, номера права собственности, даты.
Отредактировано PSAS (Ноя. 14, 2021 18:36:21)
Офлайн
PSASКороче, для тебя это О-О-Очень сложная программа будет. Если xam1816 дорос до таких программ, то ему будет неплохая тренировка. Как делать подобные программы, я писал здесь, и саму реализацию я полностью привёл здесь. Вот она делается точно так же.
Основная задача - создать программу
Отредактировано py.user.next (Ноя. 15, 2021 03:58:01)
Офлайн
py.user.nextНу не настолько все плохо если чуток изменить постановку задачи.
Короче, для тебя это О-О-Очень сложная программа будет.
PSAS
При этом каждое предложение с заглавной буквы, в конце предложения ставится точка, если информация находится на двух строчках
PSAS
Также желательно проверить и добавить информацию из следующей строчки если результирующая информация переносится на следующую строку.
PSASЯ этот вопрос изучал в свое время. Вы что имеете в виду когда говорите “соответствующие поля”? Ворд очень плохо приспособлен для шаблонизации. Лучше сразу отказаться от идеи использовать вордовый файл как шаблон. Генерировать лучше pdf или html. Что такое шаблоны посмотрите тут: https://www.makotemplates.org/
либо в шаблон вордовского документа в соответствующие поля
PSASЭто дурацкая идея. Обычно программа установлена в питон или еще куда в стандартное место. в нормальной ОС вы в эту папку даже прав обычно не имеете что-то добавлять. А данные обрабатываются в ТЕКУЩЕЙ рабочей директории. Посмотрите в чем разница между текущей рабочей директорией и директорией в которой расположен скрипт.
В папке где хранится программа добавляются несколько пдф файлов
Отредактировано doza_and (Ноя. 15, 2021 09:10:27)
Офлайн
py.user.nextНу да, у меня еще не было опыта с парсингом PDF,воспользовался camelot,вполне оправдал ожидания для данных pdf
Если xam1816 дорос до таких программ, то ему будет неплохая тренировка.
import csv import camelot tables = camelot.read_pdf('16.4.pdf',pages='1,4') # tables.export('table.csv',f='csv') # 'экспортирует всe найденые таблицы целиком в csv tbl = tables[1].df #данные из dataframe можно использовать как угодно indexes = [6, 5, 4, 7, 3, 0] data = [] for i in indexes: k = tbl[0][i] v = tbl[1][i] data.append((k,v)) tbl_2 = tables[2].df for i in range(5,16): k = tbl_2[2][i] v = tbl_2[3][i] data.append((k,v)) with open('result.csv','w',newline='',encoding='1251',errors='ignore') as f: writer = csv.writer(f) writer.writerows(data)
Наименование:,нежилое здание - склад горюче-смазочных материалов
Назначение:,Нежилое здание
"Площадь, м:",16.4
"Количество этажей, в том числе подземных этажей:","1, в том числе подземных 0"
Адрес:,"Российская Федерация, Краснодарский кр., Усть-Лабинский район, ст-ца
 Ладожская, ул.
Коншиных, 111"
Номер кадастрового квартала:,23:35:1006004
вид:,Ипотека
дата государственной регистрации:,06.02.2019
номер государственной регистрации:,23:35:1006004:277-23/033/2019-5
"срок, на который установлено ограничение прав и обременение объекта
недвижимости:",с 06.02.2019 по 30.07.2021
"лицо, в пользу которого установлено ограничение прав и обременение
объекта недвижимости:","Акционерное общество Банк ""Северный морской путь"", ИНН: 7750005482"
основание государственной регистрации:,'Договор ипотеки' №08001009.122018КЛ/ДИ-03 от 30.01.2019
вид:,Ипотека
дата государственной регистрации:,21.08.2019
номер государственной регистрации:,23:35:1006004:277-23/033/2019-7
"срок, на который установлено ограничение прав и обременение объекта
недвижимости:",с 21.08.2019 по 12.08.2022
"лицо, в пользу которого установлено ограничение прав и обременение
объекта недвижимости:","Акционерное общество Банк ""Северный морской путь"", ИНН: 7750005482"
Наименование:,Ангар Назначение:,Нежилое здание "Площадь, м:",496.2 "Количество этажей, в том числе подземных этажей:","1, в том числе подземных 0" Адрес:,"Краснодарский край, р-н. Усть-Лабинский, ст-ца. Ладожская, ул. Коншиных, д. 111" Номер кадастрового квартала:,23:35:1011002 вид:,Ипотека дата государственной регистрации:,06.02.2019 номер государственной регистрации:,23:35:1011002:271-23/033/2019-6 "срок, на который установлено ограничение прав и обременение объекта недвижимости:",с 06.02.2019 по 30.07.2021 "лицо, в пользу которого установлено ограничение прав и обременение объекта недвижимости:","Акционерное общество Банк ""Северный морской путь"", ИНН: 7750005482" основание государственной регистрации:,'Договор ипотеки' №08001009.122018КЛ/ДИ-03 от 30.01.2019 вид:,Ипотека дата государственной регистрации:,21.08.2019 номер государственной регистрации:,23:35:1011002:271-23/033/2019-7 "срок, на который установлено ограничение прав и обременение объекта недвижимости:",с 21.08.2019 по 12.08.2022 "лицо, в пользу которого установлено ограничение прав и обременение объекта недвижимости:","Акционерное общество Банк ""Северный морской путь"", ИНН: 7750005482"
Офлайн
xam1816Не, речь-то не про PDF. Надо взять текст из PDF, а потом работать с этим текстом. Форматировать его. А сначала ещё чистить и приводить к нормальному виду, чтобы можно было форматировать его без ошибок. И потом отформатированный результат сохраняется в текстовый файл. Вот для всех этих операций и нужно написать полноценную программу с разными подпрограммами, через которые протекают данные.
Ну да, у меня еще не было опыта с парсингом PDF,воспользовался camelot,вполне оправдал ожидания для данных pdf
Отредактировано py.user.next (Ноя. 16, 2021 01:23:43)
Офлайн
py.user.nextЭто понятно,чтобы сделать программу,нужно знать конечную цель этой программы.По моему мнению,автор этой темы абстрактно представляет,что должна делать его программа,потому что сохранить текстовые данные из его pdf в виде рассказа в вордовском документе не эффективно.
чтобы уметь делать такие программы, их нужно делать раз за разом
py.user.next
Например, вот он говорит “нужно увеличить только первую букву”
lambda s: s[0].upper()+s[1:]
Офлайн