导航:首页 > 编程语言 > Python如何生成两列列表

Python如何生成两列列表

发布时间:2023-08-18 12:12:54

‘壹’ python提取excel表中的数据两列

1、首先打开excel表格,在单元格中输入两列数据,需要将这两列数据进行比对相同数据。

2、然后在C1单元格中输入公式:=VLOOKUP(B1,A:A,1,0),意思是比对B1单元格中A列中是否有相同数据。

3、点击回车,即可将公式的计算结果显示出来,可以看到C1中显示的是B1在A列中找到的相同数据。

4、将公式向下填充,即可发现C列中显示出的数字即为有相同数据的,显示“#N/A”的为没有找到匹配数据的。

5、将C1-C4中的数据进行复制并粘贴成数值,即可完成相同数据的提取操作。
在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报、发行上市公告等。面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取。那么如何才能高效提取出pdf文件中的表格数据呢?

Python提供了许多可用于pdf表格识别的库,如camelot、tabula、pdfplumber等。综合来看,pdfplumber库的性能较佳,能提取出完整、且相对规范的表格。因此,本推文也主要介绍pdfplumber库在pdf表格提取中的作用。

作为一个强大的pdf文件解析工具,pdfplumber库可迅速将pdf文档转换为易于处理的txt文档,并输出pdf文档的字符、页面、页码等信息,还可进行页面可视化操作。使用pdfplumber库前需先安装,即在cmd命令行中输入:

pip install pdfplumber

pdfplumber库提供了两种pdf表格提取函数,分别为.extract_tables( )及.extract_table( ),两种函数提取结果存在差异。为进行演示,我们网站上下载了一份短期融资券主体信用评级报告,为pdf格式。任意选取某一表格,其界面如下:

接下来,我们简要分析两种提取模式下的结果差异。

(1).extract_tables( )

可输出页面中所有表格,并返回一个嵌套列表,其结构层次为table→row→cell。此时,页面上的整个表格被放入一个大列表中,原表格中的各行组成该大列表中的各个子列表。若需输出单个外层列表元素,得到的便是由原表格同一行元素构成的列表。例如,我们执行如下程序:

输出结果:

(2).extract_table( )

返回多个独立列表,其结构层次为row→cell。若页面中存在多个行数相同的表格,则默认输出顶部表格;否则,仅输出行数最多的一个表格。此时,表格的每一行都作为一个单独的列表,列表中每个元素即为原表格的各个单元格内容。若需输出某个元素,得到的便是具体的数值或字符串。如下:

输出结果:

在此基础上,我们详细介绍如何从pdf文件中提取表格数据。其中一种思路便是将提取出的列表视为一个字符串,结合Python的正则表达式re模块进行字符串处理后,将其保存为以标准英文逗号分隔、可被Excel识别的csv格式文件,即进行如下操作:

输出结果:

尽管能获得完整的表格数据,但这种方法相对不易理解,且在处理结构不规则的表格时容易出错。由于通过pdfplumber库提取出的表格数据为整齐的列表结构,且含有数字、字符串等数据类型。因此,我们可调用pandas库下的DataFrame( )函数,将列表转换为可直接输出至Excel的DataFrame数据结构。DataFrame的基本构造函数如下:

DataFrame([data,index, columns])

三个参数data、index和columns分别代表创建对象、行索引和列索引。DataFrame类型可由二维ndarray对象、列表、字典、元组等创建。本推文中的data即指整个pdf表格,提取程序如下:

其中,table[1:]表示选定整个表格进行DataFrame对象创建,columns=table[0]表示将表格第一行元素作为列变量名,且不创建行索引。输出Excel表格如下:

通过以上简单程序,我们便提取出了完整的pdf表格。但需注意的是,面对不规则的表格数据提取,创建DataFrame对象的方法依然可能出错,在实际操作中还需进行核对。

关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

投稿要求:

1)必须原创,禁止抄袭;

2)必须准确,详细,有例子,有截图;

‘贰’ python怎么创建列表

如何创建列表,或生成列表。这里介绍在python的基础知识里创建或转变或生成列表的一些方法。

零个,一个或一系列数据用逗号隔开,放在方括号[ ]内就是一个列表对象。

列表内的数据可以是多个数目,不同类型。

相关推荐:《Python视频教程》

利用函数list():

用 list([iterable])函数返回一个列表。

可选参数iterable是可迭代的对象,例如字符串,元组。list()函数将可迭代对象的元素重新返回为列表。

将字典类型数据作为参数时,返回的列表元素是字典的键。

将range()函数作为参数,返回一个整数元素的列表。

如果没有参数list()函数将返回一个空列表。

其他能生成列表的方法:

利用split分割字符串生成列表:

字符串调用split方法返回一个由分开的子串组成的列表。

利用列表推导式:

列表推导式,是生成列表的一种方便的表达式。

有关列表推导式,看下面的连接。

‘叁’ 如何在python中创建二维列表

Python中创建二维列表/数组,即创建一个list,并且这个list的元素还是list。可以用列表解析的方法实现。

创建例子如下:

2d_list=[[0forcolinrange(cols)]forrowinrange(rows)]

其中cols, rows变量替换为你需要的数值即可,例如:

2d_list=[[0forcolinrange(9)]forrowinrange(9)]
#9*9的二维列表

‘肆’ python 两个列表操作

a = [1, 7, 12, 77, 66, 23, 22, 18, 19]
b = [(1, 4), (20, 25), (7, 9)]
for i in a:

for j in b:

if i in range(j[0],j[1]+1):

print('{}∈{}'.format(i,j))

‘伍’ 求大神支招,python循环打印两个嵌套列表组合

list1 = [['A', 'B', 'C', 'D'], ['E', 'F', 'G', 'H']]
list2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
for x in zip(list1, list2):
for y in zip(x[0], x[1]):
print(f'{y[0]}.{y[1]}')

阅读全文

与Python如何生成两列列表相关的资料

热点内容
mc手机版如何免费开服务器 浏览:627
加密货币延期发布 浏览:978
福昕pdf阅读器删除 浏览:436
app收集信息怎么设置 浏览:288
python少儿编程图 浏览:747
命令方块解禁 浏览:930
海康威视服务器地址和设备标识 浏览:298
做网站用php还是html 浏览:199
脸部识别算法模型厂家 浏览:176
反编译的程序带注释吗 浏览:713
安装软件服务器未响应怎么解决 浏览:531
阀门开度单片机 浏览:568
python多线程有什么坑 浏览:681
程序员从互联网跳槽到银行里 浏览:244
百度网盘资源解压后暂不支持在线 浏览:220
android自动化环境 浏览:253
androidrealm加密 浏览:513
地图正在解压缩是什么意思 浏览:217
电脑软件能放在文件夹吗 浏览:786
uc服务器怎么打开 浏览:364