我将提取字符串中包含的所有数字。 哪个更适合于目的,正则表达式或isdigit()方法?

例:

line = "hello 12 hi 89"

结果:

[12, 89]

#1楼

@jmnas,我很喜欢您的回答,但没有找到浮点数。 我正在处理一个脚本,以分析要送入CNC铣床的代码,并且需要查找可以是整数或浮点数的X和Y尺寸,因此我将代码修改为以下内容。 查找具有正值和负值的int,float。 仍然找不到十六进制格式的值,但是您可以在num_char元组中添加“ x”和“ A”至“ F”,我认为它将解析“ 0x23AC”之类的内容。

s = 'hello X42 I\'m a Y-32.35 string Z30'

xy = ("X", "Y")

num_char = (".", "+", "-")

l = []

tokens = s.split()

for token in tokens:

if token.startswith(xy):

num = ""

for char in token:

# print(char)

if char.isdigit() or (char in num_char):

num = num + char

try:

l.append(float(num))

except ValueError:

pass

print(l)

#2楼

这有点迟了,但是您也可以扩展regex表达式以说明科学符号。

import re

# Format is [(, ), ...]

ss = [("apple-12.34 ba33na fanc-14.23e-2yapple+45e5+67.56E+3",

['-12.34', '33', '-14.23e-2', '+45e5', '+67.56E+3']),

('hello X42 I\'m a Y-32.35 string Z30',

['42', '-32.35', '30']),

('he33llo 42 I\'m a 32 string -30',

['33', '42', '32', '-30']),

('h3110 23 cat 444.4 rabbit 11 2 dog',

['3110', '23', '444.4', '11', '2']),

('hello 12 hi 89',

['12', '89']),

('4',

['4']),

('I like 74,600 commas not,500',

['74,600', '500']),

('I like bad math 1+2=.001',

['1', '+2', '.001'])]

for s, r in ss:

rr = re.findall("[-+]?[.]?[\d]+(?:,\d\d\d)*[\.]?\d*(?:[eE][-+]?\d+)?", s)

if rr == r:

print('GOOD')

else:

print('WRONG', rr, 'should be', r)

一切都好!

#3楼

我发现的最佳选择如下。 它将提取一个数字并可以消除任何类型的字符。

def extract_nbr(input_str):

if input_str is None or input_str == '':

return 0

out_number = ''

for ele in input_str:

if ele.isdigit():

out_number += ele

return float(out_number)

#4楼

此答案还包含数字在字符串中为浮点的情况

def get_first_nbr_from_str(input_str):

'''

:param input_str: strings that contains digit and words

:return: the number extracted from the input_str

demo:

'ab324.23.123xyz': 324.23

'.5abc44': 0.5

'''

if not input_str and not isinstance(input_str, str):

return 0

out_number = ''

for ele in input_str:

if (ele == '.' and '.' not in out_number) or ele.isdigit():

out_number += ele

elif out_number:

break

return float(out_number)

#5楼

如果您知道字符串中只有一个数字,即“ hello 12 hi”,则可以尝试过滤。

例如:

In [1]: int(''.join(filter(str.isdigit, '200 grams')))

Out[1]: 200

In [2]: int(''.join(filter(str.isdigit, 'Counters: 55')))

Out[2]: 55

In [3]: int(''.join(filter(str.isdigit, 'more than 23 times')))

Out[3]: 23

但是要小心! :

In [4]: int(''.join(filter(str.isdigit, '200 grams 5')))

Out[4]: 2005

python如何从字符串中提取数字_如何在Python中从字符串中提取数字?相关推荐

  1. python右对齐 数字_如何在Python中右对齐数值数据?

    我有一些数据,我显示在3列格式,形式"键:值键:键:值键:值".这里有一个例子: p: 1 sl: 10 afy: 4 q: 12 lg: 10 kla: 3 r: 0 kl: 1 ...

  2. python一次输入多个值_如何在Python的一行中从用户输入多个值?

    为了读取语言C中的多个变量,我们编写类似-//Read three variable in one line scanf("%d %d %d", &x, &y, & ...

  3. python中如何追加_如何在Python中将元素添加到列表中-追加,扩展和插入

    在Python中使用列表时,您通常会希望向列表中添加新元素. Python列表数据类型具有三种添加元素的方法:append()-将单个元素追加到列表. extend() -将iterable的元素添加 ...

  4. python中第三方模块_如何在python脚本中包含第三方模块?

    我已经开始使用Python来自动化我工作中的重复任务,并且经常需要将对第三方模块的引用集成到我的脚本中.如何将这些文件直接包含在脚本中?我知道有一些方法可以在python安装文件夹(C:\Python ...

  5. python移动文件中某个内容_如何在Python中移动文件

    如何在Python中移动文件 我查看了Python $ mv ...接口,但无法找到移动文件的方法. 我如何在Python中执行相当于$ mv ...的操作? >>> source_ ...

  6. python中获取文件大小_如何在Python中获取文件大小

    python中获取文件大小 We can get file size in Python using the os module. 我们可以使用os模块在Python中获取文件大小. Python中的 ...

  7. python ascii码16进制转换_如何在Python十六进制整数和ASCii编码的字符串之间进行转换...

    今天,我将与您分享一种将Python十六进制整数转换为ASCii编码的字符串的方法,该方法具有很好的参考价值,希望对大家有所帮助. 让我们一起关注小编,看看 当使用Pyserial与STM32通信时, ...

  8. python包含多个元组的元组_如何在python中将多个”列出的”元组连接成一个元组?...

    在python中,关于这个问题的答案很少,如何将一个元组列表连接到一个列表中?,如何在python中合并两个元组?,如何在python中合并任意数量的元组?所有的答案都引用了元组列表,所以提供的解决方 ...

  9. python3提取字符串中的数字_如何在Python中从字符串中提取数字?

    14 回复 | 直到 1 年前 1 430 3 年前 如果只想提取正整数,请尝试以下操作: >>> str = "h3110 23 cat 444.4 rabbit 11 ...

  10. python怎么判断输入的是不是数字_如何在PYTHON里判断字符串是否为数字

    1 打开JUPYTER NOTEBOOK,新建一个空白的PY文档. 2 str1 = "888" print(str1.isdecimal()) print(str1.isdigi ...

最新文章

  1. 关于eigrp-FSM有限状态机的资料
  2. 【认证课程】NP 理论复习之ospf(一)
  3. Kafka常用命令之kafka-console-consumer.sh
  4. NASA 遭攻击,安全 Bug 仍未解决!
  5. 流行的JavaScript库 ——jQuery
  6. context-param标签含义及与init-param标签的异同(转)
  7. .obj格式的文件怎么显示在html_怎么才能把安卓手机备忘录便签里的文件转到苹果上?...
  8. 李宏毅机器学习——无监督学习(二)
  9. 自动化运维工具 puppet
  10. crm系统服务器要求,crm系统需要配备什么云服务器
  11. 【JAVAWEB复习系列】第二部分
  12. C++ 3D 绘图技术调研常用库介绍
  13. 自动巡检机器人故障检测系统
  14. 深圳IT外包公司名单汇总
  15. Google谷歌中国总裁李开复将离职创业
  16. 无家可归的iPhone(第2部分)
  17. Touch ID身份认证
  18. GoogleEarth--全球卫星地图浏览
  19. 在南方读研和在北方读研有多大差异?
  20. PDF怎么测量图纸尺寸与面积

热门文章

  1. 计算机密码忘记旗舰版7,台式电脑win7旗舰版忘了开机密码怎么办?
  2. 张一鸣的大学四年收获及工作感悟
  3. 7z文件linux怎么解压,Ubuntu 12.04下解压7z文件
  4. 数据结构 WSADATA
  5. linux单引号作用,单引号 双引号如何输入(Linux运维:单引号与双引号的使用)...
  6. jQuery到Vue的迁移之路
  7. 【Python学习】Python的点滴积累
  8. c语言制作单片机人机界面,基于51单片机自制触摸屏
  9. excel 插入计算机用户名,excel中获取计算机登陆的用户名
  10. matlab茎叶图命令,[转载]转载:Stata命令(转自人大论坛)