Python:如何将PDF提取的字符串列表转换为结构化DataFrame
解决PDF提取内容转DataFrame的分类填充问题
问题描述
已用PyPDF2从PDF提取文本并处理为字符串列表,但无法将其整理成包含类别(重复填充)、商品、价格三列的DataFrame,使用split(',')后结果混乱,求可行方案。
处理代码
# open the PDF as an object and read it into PyPDF2. pdfFileObj = open('/FuentesDeDatos/AltaVista-Datos/lista3-pes.pdf', 'rb') pdfReader = PyPDF2.PdfFileReader(pdfFileObj) # create page object and extract text pageObj = pdfReader.getPage(0) page1 = pageObj.extractText() # strip away page header and footer page1 = page1[295:] page1 = page1[:-61] #Replace Characters page1 = page1.replace(',','.') page1 = page1.replace('\n',',') #Split categories page1 = page1.split(', Código Descripción Precio final,') page1
处理后列表输出
['001-12 Discos rígidos', '1779 HD 1 TB SATA 3 WD BLUE 64MB WD10EZEX,$ 9.041.78,1860 HD 2 TB SATA 3 WD BLUE 64MB WD20EZAZ,$ 10.467.19,1986 HD 2 TB SATA 6 SEAGATE BARRACUDA,$ 11.588.09,3119 HD 1 TB SATA 6 SEAGATE BARRACUDA 64MB,$ 8.254.13,3121 HD 2 TB SATA 6 SEAGATE SKYHAWK 64MB SURVEILLANCE,$ 12.739.61,32173 HD 2 TB SATA 3 WD PURPURA 64MB WD22PURZ,$ 13.900.90,32176 HD 1 TB SATA 3 WD PURPURA 64MB WD10PURZ,$ 10.942.26,001-13 Microprocesadores', '1013 MICRO AMD RYZEN 7 5700G 4.6 GHZ 8 CORE AM4,$ 65.544.62,1014 MICRO AMD RYZEN 5-5600G 4.4 GHZ 8 CORE AM4,$ 42.564.93,1017 MICRO AMD RYZEN 5-4600G 4.2GHZ/11MB/AM4,$ 34.605.73,11052 MICRO INTEL CORE I7-9700 3GHZ/12MB/LGA1151,$ 61.534.02,1122 MICRO INTEL CORE I3-10100F/3.6GHZ/6MB/SOC 1200,$ 16.502.81,1126 MICRO INTEL CELERON G5925 SOC 1200/3.6GHZ/4MB,$ 10.344.88,1130 MICRO INTEL CORE I7 10700 2.9GHZ LGA 1200,$ 68.196.69,1139 MICRO INTEL CORE I5-10400/2.9GHZ/12 MB/LGA 1200,$ 41.014.79,11820 MICRO AMD RYZEN 7 PRO 4750G OEM+FAN/3.6GHZ/8MB/AM4,$ 66.166.41,11821 MICRO INTEL CORE I9 12900/30MB/LGA 1700,$ 129.068.54,11822 MICRO INTEL CORE I3-12100F/12MB/SOC 1700,$ 26.501.69,1683 MICRO INTEL CORE I5-10400F/2.9GHZ/12MB/LGA 1200,$ 32.806.31,1684 MICRO INTEL PENTIUM GOLD G6400/4GHZ/4MB/LGA 1200,$ 13.297.60,3555 MICRO INTEL CORE I7-11700/2.5GHZ/16MB/SOC 1200,$ 73.711.21,3557 MICRO INTEL CORE I3-10105/3.7GHZ/6MB/SOC 1200,$ 30.940.77,3559 MICRO INTEL CORE I3-10105F/3.7GHZ/6MB/SOC 1200,$ 16.500.74,3572 MICRO INTEL CELERON G6900 ALDERLAKE/4MB/LGA1700,$ 13.017.25,3573 MICRO INTEL CORE I7-11700F/2.5GHZ/16MB/SOC 1200,$ 67.528.69,7772 MICRO AMD RYZEN 5-4500 PRO OEM+FAN/4.0GHZ/4MB/AM4,$ 30.123.06,9214 MICRO INTEL CORE I7 10700F 2.9GHZ LGA 1200,$ 61.649.55,001-14 Memorias', '12801 SODIMM DDR3 MEMOX 1GB 1333 MHZ DDR3,$ 2.069.36,142941 DDR4 HIKVISION U1 4GB 2666 MHZ 1.2V CL19 COMBO,$ 4.289.93,1434 DDR4 CRUCIAL 16GB 2666 MHZ CB16GU2666 COMBO,$ 11.069.53,14340 DDR4 CRUCIAL BY MICRON 8GB 2666MHZ CB8GU2666 COMBO,$ 6.477.18,14342 DDR4 CRUCIAL BY MICRON 8GB 3200 MHZ CT8G4DFRA32A,$ 6.586.94,14397 DDR5 CRUCIAL 8GB 4800MHZ CT8G48C40U5 1.1V,$ 11.447.20,14398 DDR5 CRUCIAL 16GB 4800MHZ CT16G48C40U5 1.1V,$ 22.436.33,9971 DDR2 GENERICA 2GB 800 MHZ,$ 1.814.44,001-16 Motherboards', '12255 MOTHER BIOSTAR E1-6010 DDR3 C/RADEON A68N-2100K,$ 15.109.34,12323 MOTHER GIGABYTE H410M-H V2 SOC LGA1200,$ 16.680.33,12327 MOTHER MSI H310M PRO-VDH SOC 1151/8º GEN/DDR4,$ 11.658.20,12329 MOTHER BIOSTAR TZ590-BTC DUO SOC1200 PCIE 8+1/10 S,$ 72.498.30,1233 MOTHER GIGABYTE B560M DS3H V2 SOC 1200,$ 22.518.52,12330 MOTHER ASROCK H510 PRO BTC+ SOC1200/6 PCI-E/10ºGEN,$ 69.298.24,12331 MOTHER GIGABYTE Z590 UD AC SOC 1200/ATX,$ 41.845.47,12334 MOTHER ASUS H510M-E PRIME SOC 1200/DDR4/MICRO ATX,$ 18.708.36,12335 MOTHER GIGABYTE H610M-S2H DDR4 SOC1700/MICRO ATX,$ 20.250.42']
解决方案
核心思路
- 识别每个数据块中的类别标记,分离当前类别对应的商品条目与下一个类别
- 将商品与价格按固定格式拆分,确保一一对应
- 将当前类别重复填充到每个商品条目中,最终转换为DataFrame
实现代码
import pandas as pd # 假设处理后得到的列表为page1(即上述输出) page1 = ['001-12 Discos rígidos', '1779 HD 1 TB SATA 3 WD BLUE 64MB WD10EZEX,$ 9.041.78,1860 HD 2 TB SATA 3 WD BLUE 64MB WD20EZAZ,$ 10.467.19,1986 HD 2 TB SATA 6 SEAGATE BARRACUDA,$ 11.588.09,3119 HD 1 TB SATA 6 SEAGATE BARRACUDA 64MB,$ 8.254.13,3121 HD 2 TB SATA 6 SEAGATE SKYHAWK 64MB SURVEILLANCE,$ 12.739.61,32173 HD 2 TB SATA 3 WD PURPURA 64MB WD22PURZ,$ 13.900.90,32176 HD 1 TB SATA 3 WD PURPURA 64MB WD10PURZ,$ 10.942.26,001-13 Microprocesadores', '1013 MICRO AMD RYZEN 7 5700G 4.6 GHZ 8 CORE AM4,$ 65.544.62,1014 MICRO AMD RYZEN 5-5600G 4.4 GHZ 8 CORE AM4,$ 42.564.93,1017 MICRO AMD RYZEN 5-4600G 4.2GHZ/11MB/AM4,$ 34.605.73,11052 MICRO INTEL CORE I7-9700 3GHZ/12MB/LGA1151,$ 61.534.02,1122 MICRO INTEL CORE I3-10100F/3.6GHZ/6MB/SOC 1200,$ 16.502.81,1126 MICRO INTEL CELERON G5925 SOC 1200/3.6GHZ/4MB,$ 10.344.88,1130 MICRO INTEL CORE I7 10700 2.9GHZ LGA 1200,$ 68.196.69,1139 MICRO INTEL CORE I5-10400/2.9GHZ/12 MB/LGA 1200,$ 41.014.79,11820 MICRO AMD RYZEN 7 PRO 4750G OEM+FAN/3.6GHZ/8MB/AM4,$ 66.166.41,11821 MICRO INTEL CORE I9 12900/30MB/LGA 1700,$ 129.068.54,11822 MICRO INTEL CORE I3-12100F/12MB/SOC 1700,$ 26.501.69,1683 MICRO INTEL CORE I5-10400F/2.9GHZ/12MB/LGA 1200,$ 32.806.31,1684 MICRO INTEL PENTIUM GOLD G6400/4GHZ/4MB/LGA 1200,$ 13.297.60,3555 MICRO INTEL CORE I7-11700/2.5GHZ/16MB/SOC 1200,$ 73.711.21,3557 MICRO INTEL CORE I3-10105/3.7GHZ/6MB/SOC 1200,$ 30.940.77,3559 MICRO INTEL CORE I3-10105F/3.7GHZ/6MB/SOC 1200,$ 16.500.74,3572 MICRO INTEL CELERON G6900 ALDERLAKE/4MB/LGA1700,$ 13.017.25,3573 MICRO INTEL CORE I7-11700F/2.5GHZ/16MB/SOC 1200,$ 67.528.69,7772 MICRO AMD RYZEN 5-4500 PRO OEM+FAN/4.0GHZ/4MB/AM4,$ 30.123.06,9214 MICRO INTEL CORE I7 10700F 2.9GHZ LGA 1200,$ 61.649.55,001-14 Memorias', '12801 SODIMM DDR3 MEMOX 1GB 1333 MHZ DDR3,$ 2.069.36,142941 DDR4 HIKVISION U1 4GB 2666 MHZ 1.2V CL19 COMBO,$ 4.289.93,1434 DDR4 CRUCIAL 16GB 2666 MHZ CB16GU2666 COMBO,$ 11.069.53,14340 DDR4 CRUCIAL BY MICRON 8GB 2666MHZ CB8GU2666 COMBO,$ 6.477.18,14342 DDR4 CRUCIAL BY MICRON 8GB 3200 MHZ CT8G4DFRA32A,$ 6.586.94,14397 DDR5 CRUCIAL 8GB 4800MHZ CT8G48C40U5 1.1V,$ 11.447.20,14398 DDR5 CRUCIAL 16GB 4800MHZ CT16G48C40U5 1.1V,$ 22.436.33,9971 DDR2 GENERICA 2GB 800 MHZ,$ 1.814.44,001-16 Motherboards', '12255 MOTHER BIOSTAR E1-6010 DDR3 C/RADEON A68N-2100K,$ 15.109.34,12323 MOTHER GIGABYTE H410M-H V2 SOC LGA1200,$ 16.680.33,12327 MOTHER MSI H310M PRO-VDH SOC 1151/8º GEN/DDR4,$ 11.658.20,12329 MOTHER BIOSTAR TZ590-BTC DUO SOC1200 PCIE 8+1/10 S,$ 72.498.30,1233 MOTHER GIGABYTE B560M DS3H V2 SOC 1200,$ 22.518.52,12330 MOTHER ASROCK H510 PRO BTC+ SOC1200/6 PCI-E/10ºGEN,$ 69.298.24,12331 MOTHER GIGABYTE Z590 UD AC SOC 1200/ATX,$
相关产品推荐
相关产品推荐

