(最近接触了米筐、同花顺 MindGo 等量化投资平台,打算学习一下 python 相关的知识,MindGo 量化平台上也正在产出一些 python 教材,个人觉得还不错,给大家分享一下,有兴趣的同学可以学习一波~) 1.字符串(str)
字符串是 Python 中最常用的数据类型,使用引号来创建字符串,注:单引号或者双引号都行!
[示例] 创建字符串
first='hello world !' #简单的字符串 print(first) second='key 5628' #简单的字符串 print(second) third="5q9rt" #简单的字符串 print(third) hello world ! key 5628 5q9rt
[示例] str()转化成字符串,print 输出
TypeError Traceback (most recent call last) <ipython-input-2-0cf5c4cc69a3> in <module>() 1 a=123;b=321 2 first=a+b ----> 3 print('a 加 b 等于'+first) TypeError: Can't convert 'int' object to str implicitly
1.1.访问字符串中的值
字符串内的值可以通过方括号访问。Python 语言中,所有序列都是从 0 开始标注,0 代表第一个值。如果从末尾开始数,-1 代表末尾开始第一个,-2 以此类推。
方括号内有多种访问方法,[:]代表全访问,[x]代表访问特定的位置的值,[x:]代表从 x 号位到末尾,[:y]从首位到 y 位置,但不包括 y 位置,[x:y]代表访问 x 到 y 位置的值,其中包括 x 位置,但不包括 y 位置。
字符串内空键也占一个位置。
字符串和数字一样都是不可变数据类型,不能进行修改操作。要想修改或是删除原有字符串数据,最好的方法是重新创建一个字符串。
[示例] 访问字符串中每一个值
first='python' #python 对应 012345 号位 x=first[0] print(x) y=first[5] print(y) z=first[:] print(z) a=first[-1] #-1 代表是末尾开始数第一个,-2,-3,-4....以此类推。 print(a) b=first[2:4] #包括 2,不包括 4。 print(b) second='hello world !' a=second[4:7] #注意输出结果为:'o w' 因为字符串内空键也占一个位置。 print(a) p n python n th o w
1.2.字符串运算符
字符串运算符表 x='pyt',y='hon' 运算符 介绍 示例
[示例] 字符串运算符案例
x='000300.SH 是' y='沪深 300 指数' print(x+y) print(y*4) print(x[-1]) print(x[2:5]) print('沪深' in x) print('300' not in y) 000300.SH 是沪深 300 指数 沪深 300 指数沪深 300 指数沪深 300 指数沪深 300 指数 是 030 False False
1.3.字符串格式化
Python 支持格式化字符串的输出,最基本的用法是将值插入到字符串中。 在简单的双均线策略中就运用了字符串格式化:log.info("买入%s" % (account.security))
[示例] 字符串格式化案例
x='小明今年%s 岁'%20 print(x) y='小明今年%s 岁,而小刚今年%s 岁'%(20,21) print(y) z='小明今年%s 岁,小刚今年%s 岁,而小刘今年%s 岁'%(20,21,25) print(z) 小明今年 20 岁 小明今年 20 岁,而小刚今年 21 岁 小明今年 20 岁,小刚今年 21 岁,而小刘今年 25 岁
[案例解读] 1.所谓的字符串格式化,其实就是在字符串中插入字符串格式符'%s',随后再字符串外使用 '%+值'即可完成插入。 2.字符串格式化的一般格式即可:'字符串+%s' + % + 一系列值 。 3.同一个字符串中可以同时插入多个值,案例中第三条使用了三个字符串格式符,随后分别插入三个值,一一对应。
1
Marmot 2017-11-29 10:52:21 +08:00 1
%格式化有些弊端。
比如 ‘ this is %s ’ % (1,2,3) 会出问题, 只能‘ this is %s ’ % ((1,2,3),),但是用 format 可以直接避免,f'...'(3.6+)也可以 我个人在 Python 习惯 format |
2
a499492580 OP 谢谢指点~
|
3
qq976739120 2017-11-29 19:35:28 +08:00
建议看一下 format,%都过期了
|
4
xpresslink 2017-11-30 22:24:24 +08:00
@Marmot 我觉得这个还不算什么,'this is %s' % str((1,2,3)) 多包一下也就是了。有两个经常用需求只能用 str.format 方便。
一个是多次引用, >>> '{0}-{1}-{0}'.format(0, 1) '0-1-0' 另一个是嵌套引用 >>> '{value:0>{width}}'.format(value='1', width=10) '0000000001' |
5
Marmot 2017-12-01 09:41:25 +08:00
@xpresslink 知道啊,还有 d={"name": **, "id":12, "age": 24}
可以格式化 ‘{id},{name},{age}’.format(**d), list 也可以传‘{},{},{}’.format(*l) 大兄弟,我的重点是尽量用 format,那个只是举个例子而已,不要这么较真嘛。 楼主一看就是好学的人,给个关键词自己探索一波不是最美滋滋的事情么。反正我是这样。 3.6 以后的 f"..."字符串也不错的。 |
6
jxie0755 2017-12-01 12:14:05 +08:00
"?a=123;b=321 first=str(a+b) print('a 加 b 等于'+first) a 加 b 等于 444 如果不用 str()转化,则会报错,原因为:'a 加 b 等于'是字符串,first 是值,两者不统一。需要转化成字符串,统一格式才能用 print 输出。a=123;b=321 first=a+b print('a 加 b 等于'+first)"
一般来说,如果全是 str,我就用加号"+"连接各项. 不然的话,可以用逗号","啊 print('a 加 b 等于', first) 不就行了么 |