-
2020-11-28 18:54:48
我将提取字符串中包含的所有数字。 哪个更适合于目的,正则表达式或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
更多相关内容 -
js实现在字符串中提取数字
2020-12-03 03:05:37<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” ...<head><... charset=gb2312″ /><...js实现在字符串中提取数字</title><script language=”javascript” ty -
VB6.0从一串字符中只提取数字
2017-07-24 14:24:44包含整个工程,可直接复制使用 -
c语言一串字符串中提取数字并相加的问题
2021-05-19 07:58:20满意答案Letheann2013.07.19采纳率:41%等级:13已帮助:10480人#include #include "windows.h"#define MAX 1024main(){ char *str1,*str2,*p; int i=0,k=0; str1=(char *)malloc(1024*sizeof(char));...满意答案
Letheann
2013.07.19
采纳率:41% 等级:13
已帮助:10480人
#include #include "windows.h"#define MAX 1024main(){ char *str1,*str2,*p; int i=0,k=0; str1=(char *)malloc(1024*sizeof(char)); str2=(char *)malloc(1024*sizeof(char)); fflush(stdin); gets(str1); fflush(stdin); gets(str2); p=str1; while(*p!='\0') { if(isdigit(*p)) i=i*10+*p-'0'; p++; } p=str2; while(*p!='\0') { if(isdigit(*p)) k=k*10+*p-'0'; p++; } printf("%d\n",i+k); free(str1); free(str2);}
00分享举报
-
运用wps在excel一串数字中提取中间某几位字符拼接编辑
2020-05-26 11:54:12包含字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号,字符是计算机或电子通信中字母、数字、符号的统称,是数据结构中数据存取中最小的数据单位,通常有8个二进制单位(一个字节)来表示一个字符,...注意:字符就是指类字型符号或单位,包含字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号,字符是计算机或电子通信中字母、数字、符号的统称,是数据结构中数据存取中最小的数据单位,通常有8个二进制单位(一个字节)来表示一个字符,字符是计算机中最常用的二进制编码形式,是计算机中最常用的信息形式(引自百度百科)。
使用MID函数公式,MID(字符串,开始位置,字符个数)选取单元格内从开始位置(字符的序号)算起的字符个数的字符段来进行数据输出。
使用 & 字符来进行字符段拼接;(连接文本字符串非单元或非函数的时候需要使用 “” 字符来进行字符的包括。)
使用 ±字符来进行字符数值加减;
使用( )字符来进行运算次序规定,公式段优先级选取;
例如下图,公式为使用MID函数公式选取E1单元格第1个字符(值为2)开始的6个字符(为 2.1.3. ),使用括号()括起来使用&拼接的使用MID函数公式选取E1单元格第7个字符(值为2)开始的3个字符(为 250)然后用+来加数值1得到(251),使用&拼接使用MID函数公式选取E1单元格第10个字符(值为 . )开始的2个字符(为 .3 )。得到2.1.3.251.3。
得到2.1.3.251.3。
下拉运用公式获取F列其他值;
复制F列到G列,选取数值,得到F列这部分纯数值。
得到纯数值格式数值。
-
python实现将字符串中的数字提取出来然后求和
2021-02-10 07:17:57因工作原因,很久没有学习python知识了,感觉都快忘记了,前天看到一个练习题,如何将字符串中的数字提取出来,然后求和呢?下面我来解释一下如何通过python代码来实现。题目:字符串43...3y2.f67se2.666. 将其中的...因工作原因,很久没有学习python知识了,感觉都快忘记了,前天看到一个练习题,如何将字符串中的数字提取出来,然后求和呢?下面我来解释一下如何通过python代码来实现。
题目:字符串43...3y2.f67se2.666. 将其中的所有数字提取出来然后求和
思考:
1、字符串中包含了字母和数字和小数点,怎么取出来比较呢?
2、小数点连续有很多个的时候怎么处理?
3、最后取出来的数该怎么求和?
4、最后一个是小数点该怎么办?
解题思路:
1、首先通过循环遍历去将字符串中的数字取出来
2、去判断取出来的数是数字还是字母还是小数点
3、多个小数点的数要去掉
4.取出来结果是 43 3 2 67 2.666
源代码实现过程:
str= "43...3y2.f67se2.666. "
sum = 0
number = ""
is_num ="0123456789" #定义是否是数字
is_has_float = False #定义是否是小数点
isstart = False #定义是否是数字开始的标记变量
for a in str: #将数字循环遍历
if a in is_num: #判断取出来的数字是否是数字
if isstart==True:
number = number+a
else:
number = number+a
isstart=True
continue
if a=='.': #判断取出来的数字是否是小数点
if isstart==True: #判断前一个是否是数字
if is_has_float == True:
pass
else:
is_has_float = True
number = number+a
continue
if isstart == True: #当一个数字遍历完了,就要求和,现在取出的数字格式的字符串,不是整形,所以6+7 = 67
print(number.strip('.')) #strip去掉最后一个小数点
sum = sum+float(number.strip('.'))
#前一个数字取完了之后,初始化,
number = ""
isstart = False
is_has_float = False
if isstart == True: #判断结尾是否是数字
print(number.strip("."))
sum = sum+float(number.strip("."))
print(sum)
大致的流程是这样的:
先定义好空的对象,用于存放取出来的数字,和是否是数字和小数点,然后在通过取出来的数字进入循环里面判断属于什么,比如第一个,取出来是4,第9行,判断4是不是属于定义的数字里面的值,属于就进去第一个if里面,在去判断number这个对象里面的值首个字母是不是数字,因为刚开始是空的,所以程序会到13行,最后将4添加进number里面,第二次遍历,取3,3是数字,进9行,然后第10行是判断number里面的值是不是数字,是,就添加进去,然后number就变成43了,这里说下字符串相加是拼接在一起的不是整形,第三个遍历添加的取的是小数点,进去小数点的判断里面,也就是16行,然后也是判断number值第一个是不是数字,是就进入18行,18行的判断是判断number里面有没有小数点,有就结束,没有就添加进去。
所以现在number变成43.了,然后继续遍历第4个,也是小数点,这时候就会进去18行,已经存在小数点了,pass结束,小数点后面肯定是接数字不是其他字符的,就是1.2啊这些 不会是1..2这样,所以程序会进24行,判断第一个是不是数字,然后去掉这个数字最后一个小数点,然后添加进去,重置初始化。
等于是刚才number是43..了,但这是不对的,所以去掉最后一个小数点就是43.了。但求和的时候用了浮点型转换,所以就会默认补0,变成43.0,后面因为取出的第4位是小数点,43..组不成一个正常的数字了,除非第四个继续是数字就可以继续添加,说明之前一个数已经取完了,所以要重置初始化,然后依次继续取后面的数字。最后求和。
当取出来是字母的时候,不属于判断里面的任意一个,这个时候会被直接过滤掉。
其实不难,但要心细,考虑到多种场景
补充知识:python实现计算字符串中的整数的总和
题目描述:随便输入一串字符串
例如:
输入:
‘ad23dsf34#'
目的:计算 23+34 的和
输出:
57
'''
@destination 计算字符串中整数的和
method:将字符串中的字母同意替换成一个字符然后分隔就可以得到整数
这里面用到的isdigit函数是判断字符串是否是数字
'''
def cacul(a):
sum=0#用来存放总和
c=[]
for i in a:
if i.isdigit()==False:
c.append(i)
for i in c:
a=a.replace(i,',')
a=a.split(',')
print(a)
for i in a:
if i.isdigit()==True:
sum=sum+int(i)
return sum
a='1a2b3c4d5f6g'
print(cacul(a))
运行结果为:
以上这篇python实现将字符串中的数字提取出来然后求和就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。
-
MySQL字符串中提取数字
2020-11-26 11:24:26MySQL字符串中提取id数字,例:{“id”:“11111”,“type”:12,“attr”:1} 思路: 1、先将字符串中 “id”:“11111” 提取出来 2、提取11111? 3、这里可以反向思考保留11111,将其他字符去掉 用到两个mysql 函数:... -
JavaScript如何从字符串中提取数字?
2022-01-10 17:01:43JavaScript如何从字符串中提取数字? -
python如何提取字符串中的数字
2021-01-07 13:58:48## ^ 匹配字符串的开始。 ## $ 匹配字符串的结尾。 ## \b 匹配一个单词的边界。 ## \d 匹配任意数字。 ## \D 匹配任意非数字字符。 ## x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符)。 ## ... -
python提取字符串的数字
2022-04-22 12:16:16笔记:python里提取字符串...只能提取出一个连续的数字 # 取出字符串里的数字 num_filter = filter(str.isdigit, img_name) num_list = list(num_filter) num_str = "".join(num_list) num_int = int(num_str) 例如: -
Excel公式技巧11: 从字符串中提取数字——数字位于字符串末尾
2021-01-14 10:41:59excelperfect上篇文章讲解了提取位于字符串开头的数字的公式技术,本文研究从字符串开头提取数字的技术:1. 这些数字是连续的2. 这些连续的数字位于字符串的末尾3. 想要的结果是将这些连续的数字返回到单个单元格与... -
Java提取字符串中的数字
2021-02-26 16:49:16在Java中,如果输入一串由其他非数字字符隔开的数字,但却想要将其中的数字提取出来,网上已经给出多种解决方案,以下对这些方法及其对应的情况进行简单的总结,并提出自己的解决方案:1.多个由不确定字符隔开的单个... -
用sql获取某字符串中的数字部分的语句
2020-12-15 13:00:18代码如下: create ...剩余的为数字部分 END RETURN CONVERT(bigint,@No) END 此函数可以返回某字符串中的数字部分 PATINDEX函数 返回所查内容在字符串中第一次出现的索引 STUFF函数 删除指定长度的字符并在指定的 -
Js中字符串中提取数字方法
2021-10-10 21:30:25方法一:parseInt()方法 针对前面是数字,后面非数字的情况 例: var string ="123测试"; var num1=parseInt(string);//num1=123 若数字前面含有非数字字符,则不适用 var string ="测试123测试"; var num1=... -
python如何在字符串中提取浮点数字并相加
2020-12-24 07:09:12python中如何从字符串中提取数字?比如:字符串如下:A1.45,b5,6.45,8.82 提取成:[1.45,5,6.45,8.82] 使用正则表达式,用法如下: ## 总结## ^ 匹配字符串的开始。## $ 匹配字符串的结尾。## \b 匹配一个单词的... -
python提取字符串中的数字
2021-05-11 19:18:58isdigit()函数是检测输入字符串是否只由数字组成。如果字符串只包含数字则返回 True 否则返回 False。 dream = "123456" print(dream.isdigit()) # 返回:True dream = "123abc456" print(dream.isdigit()) # 返回... -
从字符串中提取数字,并存入list中
2021-06-04 16:31:54* 从字符串中提取数字,比如11,21等 * @param str * @return */ public List<String> extractNumbersFromString(String str){ String regex = "(\\d+)"; List<String> nums = new ArrayList<&... -
用python提取字符串中的数字
2021-04-25 10:23:26获取一个字符串from_string ## 1.2.取出from_string的第一个数字 ### 1.2.1.遍历from_string,找到第一个数字 ### 1.2.2.存到get_numbers列表中 ### 1.2.3.计算出第一个数字在from_string的位置start_num ## ... -
python/正则 从字符串中提取数字
2020-08-10 09:52:48string = ‘Argentina:111...提取出[111,110,106] 代码如下: import re string = 'Argentina:111min|UK:110min|Poland:106min(dvdrelease)' num_list = re.findall('\d+', str(string)) # num_list 为[111,110,106] -
使用awk提取字符串中的数字或字母
2021-05-17 10:46:471.提取字符串中的数字$echo'dsFUs34tg*fs5a%8ar%$#@'|awk-F""'{for(i=1;i<=NF;i++){if($i~/[[:digit:]]/){str=$istr1=(str1str)}}printstr1}'输出3458或$echo'dsFUs34tg*fs5a%8ar%$#@'|awk-F""'{for(i=1;i&l... -
php实现提取字符串中数字的方法总结(代码)
2021-04-30 02:49:43这篇文章给大家介绍的内容是关于php实现提取字符串中数字的方法总结(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。PHP提取字符串中的第一组数字... -
如何在一长字符串中提取出所有数字?
2018-10-16 14:51:31提取出的数字: array ( 0 => array ( 0 => '116666294488', 1 => '807815528757', 2 => '17324675', 3 => '8', 4 => '078', 5 => '6734', 6 => '46628', 7 => '1', 8 => '46',... -
python 筛选提取输入中的数据、检索字符串内容
2022-03-01 00:18:45python 筛选提取输入中的内容 -
Mysql中实现提取字符串中的数字的自定义函数分享
2021-01-19 00:23:44因需要在mysql的数据表中某一字符串中的字段提取出数字,在网上找了一通,终于找到了一个可用的mysql函数,可以有效的从字符串中提取出数字。该mysql提取出字符串中的数字函数如下:复制代码 代码如下:CREATE ... -
python 从字符串中提取数字,使用正则表达式
2020-12-08 18:41:05python 从字符串中提取数字,负数、小数、浮点数 使用正则表达式: import re text = "line channel [7], device_id[98], sf[7], rssi [-73.558510], snr [-7.000000], seq [1210],skip_seq 0 " #par='-?\d+\.*\d*' ... -
python从含有汉字和数字的字符串中提取数字部分
2020-10-20 16:13:03问题:从字符串“1小时12分钟”中(其中两个数字是变化的)截取出1和12.或者说“共12页”截取出12 切片的方法比较简单,但不适合变化的字符串。 filter(str.isdigit,"1小时12分钟")返回的列表是:['1','1','2'] ... -
jquery提取字符串中的数字
2020-06-09 16:58:48需求:只要其中的数字 var livetime = '送30小时直播'; var livetimes = parseInt(livetime .replace(/[^0-9]/ig,"")); console.log(livetimes ); // 30 -
SQL Server 提取字符串中的纯数字
2022-06-27 16:37:22如何提取字符串中的纯数字 -
python提取字符串中的汉字数字字母
2020-11-21 02:24:34原博文2019-07-04 15:09 −#\d 匹配一个数字字符。等价于 [0-9] #\D 匹配一个非数字字符。等价于 [^0-9] #提取汉字 import re string = "hello,world!!%[545]你好234asd完全额。。。" str = re.sub("[A-Za-z0-9\!\%\...