Python-格式化输入、字符串分割
来源:互联网 发布:win10好多软件打不开 编辑:程序博客网 时间:2024/05/29 06:38
博主欢迎转载,但请一定要给出原文链接,标注出处!!!谢谢~
http://blog.csdn.net/sunny_xsc1994/article/details/78351620
特别不喜欢那些随便转载别人的原创文章又不给出链接的
所以不准偷偷复制博主的博客噢~~
Python-格式化输入、字符串分割
最近写python的时候,正好碰到需要对输入数据进行一些处理,想看看python有没有类似于C的scanf格式化输入,这样就可以按照想要的格式读入数据。查找了下,发下并没有,但找到了一个替代品,举个例子。
import re #python的正则表达式模块input = '1:3.125 false,hello'(a, b, c, d) = [t(s) for t,s in zip((int,float,bool,str),re.search('^(\d+):([\d.]+) (\w+),(\w+)$',input).groups())]print inputprint re.search('^(\d+):([\d.]+) (\w+),(\w+)$',input).groups()print zip((int,float,bool,str),re.search('^(\d+):([\d.]+) (\w+),(\w+)$',input).groups())print (a, b, c, d)#代码出处#作者:知乎用户#链接:https://www.zhihu.com/question/49840816/answer/145443497#来源:知乎#著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
输出结果为:
1:3.125 false,hello('1', '3.125', 'false', 'hello')[(<type 'int'>, '1'), (<type 'float'>, '3.125'), (<type 'bool'>, 'false'), (<type 'str'>, 'hello')](1, 3.125, True, 'hello')
可以看到最终a,b,c,d的结果也确实是从输入中获取的用户希望的结果,下面就主要来详细介绍一下各部分。
re.search('^(\d+):([\d.]+) (\w+),(\w+)$',input).groups()
re.search是在给定字符串内查找匹配的字符串,groups()函数则是以tuple的形式返回所有括号匹配到的内容,因此可以看到对应的输出结果为(‘1’, ‘3.0’, ‘false’, ‘hello’)。
这里给还不懂得正则表达式的童鞋进行一下知识的普及,^(\d+):([\d.]+) (\w+),(\w+)$中有四个(),括号是为了提取匹配的字符串,表达式中有几个()就会匹配几个字符串。^是匹配字符串的开始,$是匹配字符串的结束。\d匹配数字,\w匹配字母或数字或下划线,[]是定义匹配的字符范围,+则是匹配一次或多次。
因此,(\d+)是匹配1个或多个数字,([\d.]+) 是匹配包含数字和小数点,(\w+)则是匹配包含字母、数字、下划线的字符串。
zip((int,float,bool,str),re.search('^(\d+):([\d.]+) (\w+),(\w+)$',input).groups())
zip函数是接收多个序列作为参数,然后返回一个tuple列表,列表里的第i个tuple,由每个序列中第i个元素构成,参见下面这个例子。
x = [1, 2, 3]y = [4, 5, 6]z = [7, 8, 9]xyz = zip(x, y, z)print xyz#[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
因此,第三行的输出结果即为类型和匹配字符串所构成的tuple序列,对应t,s。t(s)显然就是将对应的s转化为相应的t类型,即最终结果的a,b,c,d。
- Python-格式化输入、字符串分割
- PHP格式化、分割、合成字符串
- 分割格式化字符串的方法
- sscanf()--字符串格式化输入
- python格式化日期输入
- python 分割字符串
- Python字符串分割函数
- python字符串分割
- Python:字符串分割
- Python-字符串分割
- Python分割字符串
- Python分割字符串split()
- python字符串分割
- python 分割字符串
- Python分割字符串
- Python字符串格式化符号
- PYTHON 字符串格式化
- 字符串格式化(python)
- Laravel简单使用
- 默认关闭系统语言随sim卡语言变化
- htmlentities()和htmlspecialchars()概要
- JAVA SE — Day 07
- 各种注意事项集合(to be continued)
- Python-格式化输入、字符串分割
- SpringBoot 集成redis和redisTemplate
- freemaker学习笔记
- 深入JAVA连接池
- Java 字节码 指令集 汇编
- 1、java多线程--生产者和消费者模拟
- nrf51822 SDK12.3.0的flash读写
- PHP 单点登录实现方案
- MFC实现Flash动画播放