python是啥,金融机构一般用这个语言做系统吗?
谢邀。

一、Python是什么
从定义角度看,python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,最初被设计用于编写自动化脚本(shell)。简单来说,python就是类似于c++和java之类的编程语言。
二、为什么金融行业要用python
1.python简单好用,国家认可。
不仅是金融行业,更是人工智能领域的网红语言。除了山东在小学教材中加入Python外,在浙江省新高中信息技术教材改革项目中,也提到了Python。从网络上流传的版本看,从2017年9月入学高中新生中开始使用新的教材,新教材的不同之处在于:编程语言将换用Python。2017年10月11日,教育部考试中心发布了“关于全国计算机等级考试(NCRE)体系调整”的通知,决定自2018年3月起,在计算机二级考试中加入 “Python语言程序设计”科目。
2.金融行业自身的特点。
金融行业自身本来就涉及大量的数值数据,用户交易额,时间,交易量,股价,等等。而Python的语法正好可以很容易地实现金融算法和数学计算,每个数学语句都能转变成一行Python代码,每行允许超过十万的计算量。没有其他语言能像Python这样适用于数学,Python精通于计算,以及数学和科学中的排列组合问题。比如SciPy库,很适合用来做技术领域和科学领域的计算,SicPy库被很多工程师,科学家和分析人员使用。NumPy,也是Python的一个扩展,它可以很好地处理数学函数,数组和矩阵。同时,Python也支持严格的编码模式,因此,使它成为一个平衡的选择,或者说方法。另外matlab库更可以形象地将金融数据转化为直观的图形表示。所以说python越来越受到金融行业的青睐。
Python有什么优势和劣势?
python的优点:
简单
强大python缺点:慢建议:学它!
为什么说python简单且强大呢?我也学过C语言,VB,了解C++,Java,js发现还是python最友好。1、首先从它的语法设计是简洁优美的。没有多余的大括号,结束标志符等繁杂的东西。让人开起来一目了然(当然这是看久了的效果,刚开始我也看得不习惯)。当时别人说python优雅,我有点不理解,现在想想,好像是哦。2、有丰富开源的库。由于python是开源的,通过网络很多高效强大的库我们都可以轻松获得。例如,图像处理的openCV库、科学计算的Numpy,数据库Pandas,数据采集Scrapy。正是应为有这些库,我们可以站在巨人肩膀上创造,小白也能轻松变大神。就像有了给你一辆车子,你就不用知道汽车的原理,学会驾驶就好。
Python被人说的最多的就是它的慢。Python 被认为速度最慢的语言之一,Python 运行完成类似的应用程序比另一种语言慢 2 倍至 10 倍时。它慢也是有原因的:
1、python是一门解析型编程语言。代码由解释器逐条解释执行或每次执行都要先翻译再运行,运行效率大大降低。就像吃火锅一样,python是要用时才把相应的“菜”放进锅里煮。2、python智能化引起的。python是弱类型编程语言,使用变量不需要定义类型,为了支持动态类型,执行的时候要不断的判断数据类型,带来很大的开销
建议:没有一门编程语言是完美的,编程语言都是相通的。所以不要想着用一门编程语言解决所有问题,但是当你掌握其中一门编程语言,就能很快上手另一门。因为python简单这一特点,就值得我们入手学它。当你很快的掌握了python,信心上了,想学另一门也是轻而易举的。我发现掌握python的人越来越多了,大家交流起来也更方便。希望以上回答对大家有帮助。
订阅更多接地气的科技知识,请关注阿土哥。
Python为什么这么厉害?
Python的确挺厉害的~但不是生来就那么厉害。
Python是在1991年被创造出来的,但真正开始被广泛使用是Python 2.6以后的事情了。从2012年开始到现在,Python的热度持续累积,成为关注度增长最快的语言。
有图有真相:Python如此快的增长,说明了它确实十分神奇
所以说,Python并没有像Golang等语言那么幸运,生来就备受关注;而是因为语言本身的设计特点对生态环境有着极强的适应能力,同时适时抓住了成长机遇,从而厚积薄发。
精妙的设计哲学早期的Python,在Java、PHP、JS、C++等重重包围下,尽管受众不广,但仍旧得以生存,主要因为Python的设计哲学使其具备了十足的生命力。
忍不住要分享一下精妙的Python之禅(摘自Python官网),它并非出自Python创始人之手,但已被官方认可为编程原则。而精妙之处在于它不仅适用于编程,更适用于人生。原来每一个热爱代码的优秀编程者都是哲学家。
The Zen of Python, by Tim PetersBeautiful is better than ugly.Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity.Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than right now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!带着这种哲学,Python逐渐发展成了一个特别简明友好、容易上手、功能强大的语言,发展过程中,Python抓住了三次飞速发展的机会。
适时抓住成长机遇第一个机会,Web与敏捷开发
在受到广泛关注之前,Python更多地是作为简单脚本语言,配合一些系统相关工作而被运用(主要是跟Perl抢地盘)。Python开始受到广泛关注,得益于Google的推动。Google或许不是第一家使用Python的公司,但它是第一家大规模使用Python进行Web相关开发的全球著名公司,从而有力地证明了Python能够很好地完成Web开发相关的许多工作。
而此时互联网正开始向快速开发转型,开发速度对于企业,尤其是初创企业而言至关重要,因此Python简洁便利与高效开发的特点吸引了众多企业和组织,同期衍生出来的社区环境又为Python提供了无数优质到可以进行生产级使用的模块和包;对比彼时PHP的模板式开发,Java的庞大繁杂,Ruby的语法新奇多变,Python为中小型企业的快速开发提供了尤为可能的解决方案,从而使得Python开始小有名气。
第二个机会,科学计算
相较于商业开发,科学计算面向更多的是非专业的编程人员,从这个方向上来说,抛开商业化软件不谈,Python的竞争对手也是前有Fortran,后有R、Julia语言的存在,虽然历史积累不如Fortran,抽象形式不及R,现代化和综合性能不如Julia,但是这些却仍然没有妨碍Python在这个领域里大显身手。
历史积累不如Fortran?没关系!借助C接口把Fortran包包裹起来让Python用就好;
抽象形式不及R?没关系!Python语法简单库还多,学习起来也不难,效率还高一丢丢,更重要的是借助这些特点能直接做产品,比R更具市场亲和力;
现代化不如Julia?没关系!Python社区大,要啥包有啥包。
更让人们惊喜的是,借助Python的各种模块和包,能够十分简单地实现之前需要折腾很久的繁杂工作,诸如访问数据库和表格文件,哪怕是在R语言中,仍旧需要从ODBC里一点点拿出数据;而用Python,以Pandas,一句话就能解决数据的读甚至写。
并且,随着计算金融和大数据的兴起,大量程序员开始投入科学计算,相较于Fortran的陈腐、R的浓厚统计数学意味以及Julia的不发达社区,Python自然而然的成了很多人的首选;而经验丰富的程序员又更进一步推动了Python社区的发展,更多优秀的包和模块得到了迅速推广:
矩阵、符号、科学计算?有NumPy、SymPy和SciPy;
统计分析?有Pandas;
可视化?有matplotlib、seaborn;
……
于是,Python很快便在该领域占据了半壁江山。
第三个机会,深度学习
在较早的很长一段时间里,提到机器学习,人们往往会使用C++、Java等作为主要工具。GPGPU的出现使得计算庞杂的机器学习任务开始由CPU向GPU转变,但研究者直接进行GPU编程,在计算复杂的模型时,不仅需要大量心智来分析算法的设计,还不得不投入大量精力解决显卡计算开发中的工程问题,为研究增添了非常大的难度。
随着时间的积累,更多的开源库出现,使得机器学习中主要算法实现抽象成了一个个模块,研究者才得以从繁杂的工程开发中解放出来。此时,代码成了模块的调用和描述,使用诸如C++或Java这样繁杂的工程化语言不再是必要选择,特别是更通用化的深度学习出现,促使研究者需要一种更加易读、易分析的描述性语言(DSL)来解决问题。
而Python因此前在科学计算领域已有广泛应用,加之它能很容易接入现有的C/C++库,以及良好的可读性,成为不少框架的必然选择,如Theano和Caffe。同时,由于AlphaGo亮眼的表现聚焦了众人的注意力,并随后开源了以Python为接口Tensorflow,使得由AI热潮带来的学习者纷纷奔向了Python和Tensorflow。
之后,越来越多的框架都开始提供Python接口——Python能够容易而清晰地描述模型结构,轻松解决计算中的数据输入(无论从硬盘、数据库、网络中的任何一种)问题,简单地实现可视化,并能轻易地设计为Web服务。甚至连使用Lua的Torch都实现了以Python为接口的演进版本PyTorch。至此,Python几乎已经统治了深度学习的模型设计、训练领域。
Python在深度学习上有多神?
正如前文所述,Python极大地减轻了深度学习研究者的心智负担,使之得以将更多的精力集中在模型的设计、改进上。而当深度学习的研究可以集中在对模型结构、对优化算法等方面的研究上,这个领域的进展迅速也就可以被理
不妨看一个简单的例子,此处使用Keras框架中对MNIST(手写数字识别)数据集的深度卷积网络的实现代码:
让我们详细看看这段不到70行的代码:加载标准数据集不过仅仅5 行,训练部分也就寥寥数行,而其中的模型,更是简单直白:数据顺序地经过若干卷积层(Conv2D)、池化层(MaxPooling2D)、展平(Flatten)和全连接层(Dense)。
加载标准数据集仅仅5 行
训练部分寥寥数行
这样的一段程序,经过训练,对于手写数字的识别率可以达到99.25%,如果你愿意,也可以为此程序接入微信、网站,或包装成应用程序,一切都只需要简单的几行代码即可完成。
更多Python可以做到的事情请参看你都用 Python 来做什么?
所以你看,Python其实是属于厚积薄发型选手,与其说它神,倒不如说它早就做好了准备,一直在寻找爆发的机会,Python的语言哲学值得认真品读一番。
python有意思吗?
可以拿来了解女朋友情绪变化,顺道自动回复。还能一键扣图,让设计师下岗,只能在一旁痛哭流涕……一
虽然程序员不会有女朋友,但是这个也可以用在同性朋友身上哦。再也不用担心工作忙,没法经常和她/他/它聊天了。
可以实时知道女友的情感情绪指数,再也不用担心女友莫名其妙生气了。
还能顺道教女朋友学英语(女朋友一定很惊喜)
为了方便快速开发,我们使用python中的wxpy模块完成微信的基本操作。
首先,我们设置一个config.ini配置文件,并从这个配置文件开始读取信息。这些参数一看就懂,所以无需多言。设置完相关参数以后,我们再来学习一下,如何每天教女友学英语:
如果你愿意,可以在上面对时间的判断中,加入一些其他你想要的,这样你女友就更开心啦!后期如果有时间,我将会加上以上节日问候功能。
接着,开启微信机器人,为了程序的健壮性,自动判断一下操作系统,根据不同操作系统执行不同指令:
只有每天的问候和节日问候是仅仅不够的,我们必须时刻知道她的情绪指数,这里可以使用snowNlp或者jieba来做分析,但是为了能够在打包成exe可执行文件时使得程序尽可能小,我们采取直接调用接口的方式来做。代码如下:
教完女友学英语后,开始把我们的关心语发给她。这里涉及到wxpy模块的相关操作,很简单,看我的例子就会了:
最后,就是如何每天定时发关心语给女友的问题了。
首先来个while循环,365天无限关心最后,输入以下代码开始守护女友模式吧~
使用教程
pip安装下列包:
[x] pip install wxpy[x] pip install requests设置以下内容:演示图片
原作者:云外孤岛 http://www.cnblogs.com/cloudbird/p/10534658.html至于没有女朋友的……
要不考虑一下它
二
本段转载自:高级农民工(ID:Mocun6)这张逼死淘宝专业抠图店家的照片,用3行Python代码,花5秒就能超高精度抠图。
这里的 API 接口来源于 Remove.bg 网站,一个邮箱账号可以申请一个免费接口,可处理 50 张照片,如果想处理更多或者生成高清照片,需要买套餐,算下来价格大概是 1 元一张。
上淘宝搜索「证件照换底色」的店铺,发现多数店铺收费是 5 元,觉得利用好价格差空间,应该有商机。
接着比较感兴趣淘宝店家是怎么抠图的,抠图的质量如何,于是选择了排名前两位的店家来做测试,跟掌柜开始了一段「套路」聊天。
先找了第一家店主,店主上来就说先发照片,抠图满意再付款,于是就发了文章开头那张比较难抠的一张,想看看他们水平怎么样:
没想到店主这一抠就是二十分钟。。。
满心期待地打开图片一看,头发丝抠的不好,照片色彩也变了:
跟第二家店掌柜聊了后,也是花了 16 分钟弄好,比第一家稍好一点:
把三幅图一对比,从头发丝抠的效果和照片的色彩还原度就可以看出还是 AI 效果最好,而且只需要 5 秒钟。
于是,大致可以总结这款 AI 工具从效果和效率上基本碾压手动 PS 的淘宝店家。
心疼掌柜,花了 20 分钟还没有拿下我这一单……
这么难抠的图 AI 工具效果都好,那简单的证件照应该更没问题,基本确定有商机。
接下来用 Python 把上面的代码进行完善打包成 exe 文件执行。
轻松实现这样的功能:只需要简单敲几下键盘,就可以随意批量更换照片的背景色(常见的白、蓝、红三种颜色),然后秒换背景出图。
具体实现很简单,第一步输入 API,第二步输入图片所在文件夹,接着程序就会先抠图,生成带透明背景的 PNG 格式图形。
接下来第三步利用 PIL 库来设置图片的背景颜色,键入一个字母就可以秒生成对应的背景色证件照。
b:blue 蓝色r:red 红色w:white 白色这样就做成了一个简单的证件照更换工具,拿去开个淘宝店感觉应该没太大问题,和设计师抢饭吃没有压力……
此工具可私信发“证件照”获取。
你要是还不会Python……
也可以发“Python”,免费学习
Python有什么奇技淫巧?
Python奇技淫巧
当发布python第三方package时, 并不希望代码中所有的函数或者class可以被外部import, 在 __init__.py 中添加 __all__ 属性,
该list中填写可以import的类或者函数名, 可以起到限制的import的作用, 防止外部import其他函数或者类
#!/usr/bin/env python
# -*- coding: utf-8 -*-
frombaseimportAPIBase
fromclientimportClient
fromdecoratorimportinterface, export, stream
fromserverimportServer
fromstorageimportStorage
fromutilimport(LogFormatter, disable_logging_to_stderr,
enable_logging_to_kids, info)
__all__ = ['APIBase','Client','LogFormatter','Server',
'Storage','disable_logging_to_stderr','enable_logging_to_kids',
'export','info','interface','stream']
with的魔力
with语句需要支持 上下文管理协议的对象 , 上下文管理协议包含 __enter__ 和 __exit__ 两个方法. with语句建立运行时上下文需要通过这两个方法执行 进入和退出 操作.
其中 上下文表达式 是跟在with之后的表达式, 该表示大返回一个上下文管理对象
# 常见with使用场景
withopen("test.txt","r")asmy_file:# 注意, 是__enter__()方法的返回值赋值给了my_file,
forlineinmy_file:
print line
详细原理可以查看这篇文章, 浅谈 Python 的 with 语句
知道具体原理, 我们可以自定义支持上下文管理协议的类, 类中实现 __enter__ 和 __exit__ 方法
#!/usr/bin/env python
# -*- coding: utf-8 -*-
classMyWith(object):
def__init__(self):
print"__init__ method"
def__enter__(self):
print"__enter__ method"
returnself# 返回对象给as后的变量
def__exit__(self, exc_type, exc_value, exc_traceback):
print"__exit__ method"
ifexc_tracebackisNone:
print"Exited without Exception"
returnTrue
else:
print"Exited with Exception"
returnFalse
deftest_with():
withMyWith()asmy_with:
print"running my_with"
print"------分割线-----"
withMyWith()asmy_with:
print"running before Exception"
raiseException
print"running after Exception"
if__name__ =='__main__':
test_with()
执行结果如下:
__init__ method
__enter__ method
running my_with
__exit__ method
ExitedwithoutException
------分割线-----
__init__ method
__enter__ method
running before Exception
__exit__ method
ExitedwithException
Traceback(most recent call last):
File"bin/python", line34,in
exec(compile(__file__f.read(), __file__, "exec"))
File"test_with.py", line33,in
test_with()
File"test_with.py", line28,intest_with
raiseException
Exception
证明了会先执行 __enter__ 方法, 然后调用with内的逻辑, 最后执行 __exit__ 做退出处理, 并且, 即使出现异常也能正常退出
filter的用法
相对 filter 而言, map和reduce使用的会更频繁一些, filter 正如其名字, 按照某种规则 过滤 掉一些元素
#!/usr/bin/env python
# -*- coding: utf-8 -*-
lst = [1,2,3,4,5,6]
# 所有奇数都会返回True, 偶数会返回False被过滤掉
print filter(lambda x: x % 2!=0, lst)
#输出结果
[1,3,5]
一行作判断
当条件满足时, 返回的为等号后面的变量, 否则返回else后语句
lst = [1,2,3]
new_lst = lst[0]iflstisnotNoneelseNone
printnew_lst
# 打印结果
1
装饰器之单例
使用装饰器实现简单的单例模式
# 单例装饰器
defsingleton(cls):
instances = dict() # 初始为空
def_singleton(*args, **kwargs):
ifclsnotininstances:#如果不存在, 则创建并放入字典
instances[cls] = cls(*args, **kwargs)
returninstances[cls]
return_singleton
@singleton
classTest(object):
pass
if__name__ =='__main__':
t1 = Test()
t2 = Test()
# 两者具有相同的地址
printt1, t2
staticmethod装饰器
类中两种常用的装饰, 首先区分一下他们
普通成员函数, 其中第一个隐式参数为 对象
classmethod装饰器 , 类方法(给人感觉非常类似于OC中的类方法), 其中第一个隐式参数为 类
staticmethod装饰器 , 没有任何隐式参数. python中的静态方法类似与C++中的静态方法
#!/usr/bin/env python
# -*- coding: utf-8 -*-
classA(object):
# 普通成员函数
deffoo(self, x):
print "executing foo(%s, %s)"% (self, x)
@classmethod# 使用classmethod进行装饰
defclass_foo(cls, x):
print "executing class_foo(%s, %s)"% (cls, x)
@staticmethod# 使用staticmethod进行装饰
defstatic_foo(x):
print "executing static_foo(%s)"% x
deftest_three_method():
obj = A()
# 直接调用噗通的成员方法
obj.foo("para")# 此处obj对象作为成员函数的隐式参数, 就是self
obj.class_foo("para")# 此处类作为隐式参数被传入, 就是cls
A.class_foo("para")#更直接的类方法调用
obj.static_foo("para")# 静态方法并没有任何隐式参数, 但是要通过对象或者类进行调用
A.static_foo("para")
if__name__=='__main__':
test_three_method()
# 函数输出
executing foo(
executing class_foo(
executing class_foo(
executing static_foo(para)
executing static_foo(para)
property装饰器
定义私有类属性
将 property 与装饰器结合实现属性私有化( 更简单安全的实现get和set方法 )
#python内建函数
property(fget=None, fset=None, fdel=None, doc=None)
fget 是获取属性的值的函数, fset 是设置属性值的函数, fdel 是删除属性的函数, doc 是一个字符串(like a comment).从实现来看,这些参数都是可选的
property有三个方法 getter() , setter() 和 delete() 来指定fget, fset和fdel。 这表示以下这行
classStudent(object):
@property #相当于property.getter(score) 或者property(score)
defscore(self):
returnself._score
@score.setter #相当于score = property.setter(score)
defscore(self, value):
ifnotisinstance(value, int):
raiseValueError('score must be an integer!')
ifvalue 100:
raiseValueError('score must between 0 ~ 100!')
self._score = value
iter魔法
通过yield和 __iter__ 的结合, 我们可以把一个对象变成可迭代的
通过 __str__ 的重写, 可以直接通过想要的形式打印对象
#!/usr/bin/env python
# -*- coding: utf-8 -*-
classTestIter(object):
def__init__(self):
self.lst = [1,2,3,4,5]
defread(self):
foreleinxrange(len(self.lst)):
yieldele
def__iter__(self):
returnself.read()
def__str__(self):
return','.join(map(str, self.lst))
__repr__ = __str__
deftest_iter():
obj = TestIter()
fornuminobj:
printnum
printobj
if__name__ =='__main__':
test_iter()
神奇partial
partial使用上很像C++中仿函数(函数对象).
在stackoverflow给出了类似与partial的运行方式
defpartial(func, *part_args):
defwrapper(*extra_args):
args = list(part_args)
args.extend(extra_args)
returnfunc(*args)
returnwrapper
利用用闭包的特性绑定预先绑定一些函数参数, 返回一个可调用的变量, 直到真正的调用执行
#!/usr/bin/env python
# -*- coding: utf-8 -*-
fromfunctoolsimportpartial
defsum(a, b):
returna + b
deftest_partial():
fun = partial(sum, 2)# 事先绑定一个参数, fun成为一个只需要一个参数的可调用变量
printfun(3)# 实现执行的即是sum(2, 3)
if__name__ =='__main__':
test_partial()
# 执行结果
5
神秘eval
eval我理解为一种内嵌的python解释器(这种解释可能会有偏差), 会解释字符串为对应的代码并执行, 并且将执行结果返回
看一下下面这个例子
#!/usr/bin/env python
# -*- coding: utf-8 -*-
deftest_first():
return3
deftest_second(num):
returnnum
action = { # 可以看做是一个sandbox
"para":5,
"test_first": test_first,
"test_second": test_second
}
deftest_eavl():
condition = "para == 5 and test_second(test_first) > 5"
res = eval(condition, action) # 解释condition并根据action对应的动作执行
printres
if__name__ =='_
exec
exec在Python中会忽略返回值, 总是返回None, eval会返回执行代码或语句的返回值
exec 和 eval 在执行代码时, 除了返回值其他行为都相同
在传入字符串时, 会使用 compile(source, '
#!/usr/bin/env python
# -*- coding: utf-8 -*-
deftest_first():
print"hello"
deftest_second():
test_first()
print"second"
deftest_third():
print"third"
action = {
"test_second": test_second,
"test_third": test_third
}
deftest_exec():
exec"test_second"inaction
if__name__ =='__main__':
test_exec() # 无法看到执行结果
getattr
getattr(object, name[, default]) Return the value of
the named attribute of object. name must be a string. If the string is
the name of one of the object’s attributes, the result is the value of
that attribute. For example, getattr(x, ‘foobar’) is equivalent to
x.foobar. If the named attribute does not exist, default is returned if
provided, otherwise AttributeError is raised.
通过string类型的name, 返回对象的name属性(方法)对应的值, 如果属性不存在, 则返回默认值, 相当于object.name
# 使用范例
classTestGetAttr(object):
test = "test attribute"
defsay(self):
print"test method"
deftest_getattr():
my_test = TestGetAttr()
try:
printgetattr(my_test,"test")
exceptAttributeError:
print"Attribute Error!"
try:
getattr(my_test, "say")()
exceptAttributeError:# 没有该属性, 且没有指定返回值的情况下
print"Method Error!"
if__name__ =='__main__':
test_getattr()
# 输出结果
test attribute
test method
命令行处理
defprocess_command_line(argv):
"""
Return a 2-tuple: (settings object, args list).
`argv` is a list of arguments, or `None` for ``sys.argv[1:]``.
"""
ifargvisNone:
argv = sys.argv[1:]
# initialize the parser object:
parser = optparse.OptionParser(
formatter=optparse.TitledHelpFormatter(width=78),
add_help_option=None)
# define options here:
parser.add_option( # customized description; put --help last
'-h','--help', action='help',
help='Show this help message and exit.')
settings, args = parser.parse_args(argv)
# check number of arguments, verify values, etc.:
ifargs:
parser.error('program takes no command-line arguments; '
'"%s" ignored.'% (args,))
# further process settings & args if necessary
returnsettings, args
defmain(argv=None):
settings, args = process_command_line(argv)
# application code here, like:
# run(settings, args)
return0# success
if__name__ =='__main__':
status = main()
sys.exit(status)
读写csv文件
# 从csv中读取文件, 基本和传统文件读取类似
importcsv
withopen('data.csv','rb')asf:
reader = csv.reader(f)
forrowinreader:
printrow
# 向csv文件写入
importcsv
withopen('data.csv','wb')asf:
writer = csv.writer(f)
writer.writerow(['name','address','age'])# 单行写入
data = [
( 'xiaoming ','china','10'),
( 'Lily','USA','12')]
writer.writerows(data) # 多行写入
各种时间形式转换
只发一张网上的图, 然后差文档就好了, 这个是记不住的
字符串格式化
一个非常好用, 很多人又不知道的功能
>>>name ="andrew"
>>>"my name is {name}".format(name=name)
'my name is andrew'


还没有评论,来说两句吧...