Python2.7如何从包含汉字和数字的字符串中截取数字
来源:互联网 发布:2017淘宝总消费怎么查 编辑:程序博客网 时间:2024/06/07 16:30
今天有一个小伙伴想要从“498人”这个字符串里截取数字出来,我脑子里虽然飘过不少方法,但是觉得不码出来就等于是空的。网上找了些资料,总结出了一些干货,在此记录下来。
首先先看一个字符串:
mystring = u'今年18岁'
这个字符串有汉字还有数字,现在我们要提取出其中的数字,或许我们马上就会想到一种方法:切片。
的确,切片的确可以简单粗暴的解决一些事情,比如这个字符串,从第三位到倒数第二位就是数字。代码如下:
mystring = u'今年18岁'print(mystring)[2:-1]
运行结果如下:
18
方括号中的2为起始索引,这里指的第三位,-1为结束索引,这里指的是倒数第二位,结合起来取的就是18这个数字了。完整的切片操作格式是[start:stop:step],step指步长,具体作用这里不做展开。
貌似这个方法甚好,小伙伴们打完收工就要去喝咖啡了,但是这个方法太死,万一字符串做变动,这个方法就不适用了,比如我把这个字符串改成“我今年18岁你信吗”,这代码是不是也要跟着改了?
这个时候就要搬出比较高级的用法了:filter()函数~
来看看官方解释:
简单说来就是,用一个自定function来过滤iterable,那么这里的关键就是怎么写这个function了。到这里又要用到一个函数str.isdigit,这个函数是用来判断字符串是否只有数字组成,组合起来使用就是:filter(str.isdigit, iterable),把序列(iterable)的每一项传到自定义的过滤函数(str.isdigit)里来处理,代码如下:
mystring = u'今年18岁'print(filter(str.isdigit, mystring))
不过这段代码运行起来会报错:
TypeError: descriptor 'isdigit' requires a 'str' object but received a 'unicode'
由于mystring是unicode类型,这里只要做一下转码就可以,做完后我们用type函数来验证一下:
mystring2 = mystring.encode('gbk')print(type(mystring2))
打印结果:
<type 'str'>
最后附上完整代码:
# encoding:utf-8mystring = u'今年18岁'mystring2 = mystring.encode('gbk')print(type(mystring2))print(filter(str.isdigit, mystring2))
这样就能实现快速从字符串中截取数字了:
<type 'str'>18
- Python2.7如何从包含汉字和数字的字符串中截取数字
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
- 判断字符串中是否仅包含字母数字和汉字
- 判断字符串中是否仅包含字母数字和汉字
- java从字符串中截取数字
- 从包含数字和字母的字符串中,取出所有数字并组成一个数(Python)
- 截取包含汉字的字符串
- 如何截取字符串里面的所有数字
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
- Linux的tar命令
- SQL SERVER 检查SQL条件参数中是否存在非法字符
- 二进制颜色代码大全
- [一万字深度干货]工程师们,我们该怎么办?
- Android studio的安装及配置
- Python2.7如何从包含汉字和数字的字符串中截取数字
- 基于像素清晰度的图像融合算法(Python实现)
- Eclipse的编译器(ECJ)和JDK的编译器(javac)
- 【BZOJ 1026】 [SCOI2009]windy数
- ThreadLocal对SimpleDataFormat的使用
- 【设计模式】单例模式(Unity3D/C#)
- 【Swoole扩展】基础到进阶
- iOS学习之强引用_strong和弱引用_weak,retain,copy,assignd的关系
- 三次典型的Http请求日志