零基础学编程033:字符串的split拆分与join连接

在《零基础学编程021:获取股票实时行情数据》这一节里,我们学了split()函数,可以将一个字符串切开。假设有一个历史行情字符串,信息包括:股票名称、开盘价、最高价、最低价、收盘价、交易量等,用split() 之后可以方便地取出任何一个价格,例如:v[1]就是开盘价。

hq = "谷歌,843.64,847.24,840.8,845.62,779900"
v = hq.split(',')
print(v)

# 输出结果:['谷歌', '843.64', '847.24', '840.8', '845.62', '779900']

可以看到print(v)的输出内容是一个列表list,python将其输出时,会在前后加上中括号[ ],里面的每一项内容仍是字符串,显示出来不直观。如果你想把这些字符串再重新拼起来,以前有编程基础的朋友马上会这样做:

v = ['谷歌', '843.64', '847.24', '840.8', '845.62', '779900']
hq = ""
for i in v :
    hq += str(i) + ","
hq = hq[:-1]  #去掉尾部多余的一个逗号
print(hq)

但实际上应该用 join() 函数,简洁、直观、性能好:

v = ['谷歌', '843.64', '847.24', '840.8', '845.62', '779900']
hq = ','.join(v)
print(hq)

这个join()函数与split()函数的功能几乎正好相反,但初学者在理解','.join()这条语句时感觉会很不习惯,似乎v.join(',')更符合思维习惯。关于这个问题,感兴趣的朋友可以读下面这篇帖子,里面介绍了这种设计的主要考虑和经过:http://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring

最近正在零基础学画画,尝试着把这两个函数的意思画了下来。

s = 'ab,cd,ef,gh'
t = s.split(',')
s = ','.join(t)

这里需要注意的是:s是一个字符串,而t是4个字符串。

还需要特别注意这样一种用法:

','.join('abcde')

join()函数里的参数是一个列表list(准确地说,应该是一个可遍历的对象,这里先不介绍它),python的字符串也是可遍历的,可以拆为一个个的单个字符,所以结果就是:

'a,b,c,d,e'

我把以前的365行复利数据表再利用join函数写一遍,你还能看懂吗?

def fuli(i) :
    y = round(1.01**i, 2)
    return "(1+0.01) ^ " + str(i) + " = " + str(y)
    
fuli365 = [fuli(i) for i in range(1,366)]
print('\n'.join(fuli365))

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-03-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

C# WinForm 判断窗体控件是否修改过

760
来自专栏自由而无用的灵魂的碎碎念

小项目分享---混色器

编写代码的同志们一般懂美术的就少了,偶也是,什么色轮、三维加色等等。虽然看过一些书籍(如内田广由纪的《配色基础原理》),不过还是一知半解的。

963
来自专栏c#开发者

xmldocument内嵌入另一个xmldocument,xmlnode的方法

string xmlstr1 = @"<root><head>myHead</head><body></body></root>"; s...

2705
来自专栏跟着阿笨一起玩NET

使用延迟的FileSystemWatcher来避免重复触发事件

  程序里需要监视某个目录下的文件变化情况: 一旦目录中出现新文件或者旧的文件被覆盖,程序需要读取文件内容并进行处理;但在实际处理中发现当一个文件产生变化时,C...

902
来自专栏菩提树下的杨过

Silverlight:利用异步加载Xap实现自定义loading效果

关键点: 1.利用WebClient的DownloadProgressChanged事件更新下载进度 2.下载完成后,分析Xap包的程序集Assembly信息 ...

18510
来自专栏hbbliyong

socket 通信 多线程调用窗体(委托)的几个知识点,记录在案,以备查阅

1.socket 通信传输汉字的方法:Encoding.GetEncoding("GB2312").GetString(Receivebyte) 发送接收都这样...

2737
来自专栏我和未来有约会

Silverlight制作逐帧动画 v2 - part2

Silverlight制作逐帧动画 v2 - part2 在这里完善了一下算法,加入了fps的机制进去。 private string[] ...

1886
来自专栏木宛城主

曾今的代码系列——自己的分页控件+存储过程实现分页

项目里面的测试代码,仅供参考 LoginByAjax <title>Ajax登陆</title> <script src="Scripts/c...

1855
来自专栏田超学前端

【微信小程序】c# 实现获取openid、session_key 服务端

4920
来自专栏码匠的流水账

zuul自定义SimpleHostRoutingFilter

zuul的SimpleHostRoutingFilter主要用来转发不走eureka的proxy,里头是使用httpclient来转发请求的,但是有时候我们需要...

1282

扫码关注云+社区