Python 如何在一段文字中提取出全部数字?

Python0516

Python 如何在一段文字中提取出全部数字?,第1张

先用json模块把上面的字符串转换为python的字典a,然后vs = a.values()这个vs里面就是所有的数字组成的list。

如果用正则的话:

import re

s="{'LIE':……}"

vs=re.findall(r'\d+', s)

这里前提是key中没有数字,values全部为数字

数据类型是每种编程语言必备的属性,只有给数据赋予明确的数据类型,计算机才能对数据进行处理运算,因此,使用正确的数据类型是十分有必要的,以下是Python编程常用的数据类型:

一、数字型

Python数字类型主要包括int(整型)、long(长整型)和float(浮点型),但是在Python3中就不再有long类型了。

1、int(整型)

在32位机器上,整数的位数是32位,取值范围是-231~231-1,即-2147483648~214748364在64位系统上,整数的位数为64位,取值范围为-263~263-1,即9223372036854775808~9223372036854775807。

2、long(长整型)

Python长整型没有指定位宽,但是由于机器内存有限,使用长的长整数数值也不可能无限大。

3、float(浮点型)

浮点型也就是带有小数点的数,其精度和机器有关。

4、complex(复数)

Python还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b

都是浮点型。

二、字符串

在Python中,加了引号的字符都被认为是字符串,其声明有三种方式,分别是:单引号、双引号和三引号Python中的字符串有两种数据类型,分别是str类型和unicode类型,str类型采用的ASCII编码,无法表示中文,unicode类型采用unicode编码,能够表示任意字符,包括中文和其他语言。

三、布尔型

和其他编程语言一样,Python布尔类型也是用于逻辑运算,有两个值:True(真)和False(假)。

四、列表

列表是Python中使用最频繁的数据类型,集合中可以放任何数据类型,可对集合进行创建、查找、切片、增加、修改、删除、循环和排序操作。

五、元组

元组和列表一样,也是一种序列,与列表不同的是,元组是不可修改的,元组用”()”标识,内部元素用逗号隔开。

六、字典

字典是一种键值对的集合,是除列表以外Python之中最灵活的内置数据结构类型,列表是有序的对象集合,字典是无序的对象集合。

七、集合

集合是一个无序的、不重复的数据组合,它的主要作用有两个,分别是去重和关系测试。

因为不知道 "sample.txt" 的内容是什么格式,我猜是这样的问题:

stuff = re.findall ('[0-9]+',line)

的意思是将字符串 line 中的所有连续的数字找到,组成数组

当 line 中的内容存在不止一个数字的时候,例如:

123 234

时,stuff 的结果为:

['123', '234']

这样的数组,长度不为 1

这时,语句

if len(stuff) != 1 :continue

就会跳过这一循环,使得这行中的数字没有被加到总和中。

如果是这样的话,例子代码:

import re

digits_reg = re.compile(r'\d+')

with open('sample.txt', 'r') as file_handle:

    print sum(sum(map(int, digits_reg.findall(line))) for line in file_handle)

ps:

我猜你的语句

if len(stuff) != 1 :continue

是想要跳过没有数字的行,但是没有考虑多个数字的行,所以少加了