Python学习笔记 (2) :字符串输出、操作、格式化和日期、时间格式化

时间:2024-11-27 08:03:55

一、字符串输出及运算

1.常用输出格式及方法

 print('')#单引号
print("")#双引号
print("""""")#三个引号
1234567890
1234567890
1234567890 Process finished with exit code 0

运行结果

没有任何区别,这就对了,我们可以通过不同的三种引号来输出指定的字符串。

 print(''456'')#内部引号输出错误
print(""456"")#内部引号输出错误
 File "C:/Users/AMTF/PycharmProjects/untitled1/CLASS/Test1.py", line 1
print(''456'')#内部单引号输出错误
^
SyntaxError: invalid syntax

运行结果

想输出带引号的字符串123‘456’789,却报错了,想不通!那么看看下面的代码就ok了!

解决方案1:

 1 print("123'456'789")#外面用双引号    

123''789

Process finished with exit code 0

运行结果

解决方案2:

 1 print('123\'456\'789')#在单引号前加转意符\

123''789

Process finished with exit code 0

运行结果

多行字符串输出

1 print('''\
2 姓名:司马涂登
3 年龄:68岁
4 性别:男
5 特长:阅览群书过目不忘
6 ''')

运行结果

2.字符转义、运算、格式化

就是字符串转义用法:

Python学习笔记 (2) :字符串输出、操作、格式化和日期、时间格式化

Python字符串运算符

下表实例变量a值为字符串"Hello",b变量值为"Python":

Python学习笔记 (2) :字符串输出、操作、格式化和日期、时间格式化

Python字符串格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

Python学习笔记 (2) :字符串输出、操作、格式化和日期、时间格式化

Python学习笔记 (2) :字符串输出、操作、格式化和日期、时间格式化

用format函数格式化字符串的用法

语法

它通过{}和:来代替%。
“映射”示例

通过位置

In [1]: '{0},{1}'.format('kzc',18)
Out[1]: 'kzc,18'
In [2]: '{},{}'.format('kzc',18)
Out[2]: 'kzc,18'
In [3]: '{1},{0},{1}'.format('kzc',18)
Out[3]: '18,kzc,18'

字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。

通过关键字参数

In [5]: '{name},{age}'.format(age=18,name='kzc')
Out[5]: 'kzc,18'

通过对象属性

class Person:
def __init__(self,name,age):
self.name,self.age = name,age
def __str__(self):
return 'This guy is {self.name},is {self.age} old'.format(self=self)

In [2]: str(Person('kzc',18))
Out[2]: 'This guy is kzc,is 18 old'

通过下标

In [7]: p=['kzc',18]
In [8]: '{0[0]},{0[1]}'.format(p)
Out[8]: 'kzc,18'

有了这些便捷的“映射”方式,我们就有了偷懒利器。基本的python知识告诉我们,list和tuple可以通过“打散”成普通参数给函数,而dict可以打散成关键字参数给函数(通过和*)。所以可以轻松的传个list/tuple/dict给format函数。非常灵活。

格式限定符

它有着丰富的的“格式限定符”(语法是{}中带:号):

填充与对齐
填充常跟对齐一起使用
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
比如:

In [15]: '{:>8}'.format('189')
Out[15]: ' 189'
In [16]: '{:0>8}'.format('189')
Out[16]: '00000189'
In [17]: '{:a>8}'.format('189')
Out[17]: 'aaaaa189'

精度与类型f

精度常跟类型f一起使用

In [44]: '{:.2f}'.format(321.33345)
Out[44]: '321.33'

其中.2表示长度为2的精度,f表示float类型。

其他类型
主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。

In [54]: '{:b}'.format(17)
Out[54]: '10001'
In [55]: '{:d}'.format(17)
Out[55]: '17'
In [56]: '{:o}'.format(17)
Out[56]: '21'
In [57]: '{:x}'.format(17)
Out[57]: '11'

用,号还能用来做金额的千位分隔符。

In [47]: '{:,}'.format(1234567890)
Out[47]: '1,234,567,890'

python中日期和时间格式化输出的方法:

具体分析如下:

python格式化日期时间的函数为datetime.datetime.strftime();由字符串转为日期型的函数为:datetime.datetime.strptime(),两个函数都涉及日期时间的格式化字符串,这里提供详细的代码详细演示了每一个参数的使用方法及范例。

下面是格式化日期和时间时可用的替换符号 %a 输出当前是星期几的英文简写

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%a')
'Sun'

%A 输出完整的星期几名称英文

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%A')
'Sunday'

%b  输出月份的英文简写

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%b')
'Sep'

%B 输出月份的英文完整名称

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%B')
'September'

%c 以本地时间显示日期和时间

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%c')
'09/15/13 21:43:29'

%d 显示1-31之间的数,每月的第几天,也就是年月日中的日

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%d')
'15'

%H  以24小时制显示小时,比如,02,14

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%H')
'21'

%I 以12小时制的方式显示当前小时,例如当前jb51.net服务器的时间为晚上21点,使用%I显示09

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%I')
'09'

%j 显示当前日期为一年中的第几天,如当前jb51.net服务器时间为2013年9月15日,则显示为258,也就是一年中的第258天

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%j')
'258'

%m 显示1-12之间的月份

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%m')
'09'

%M 显示00-59之间的分钟数

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%M')
'43'

%p 以 A.M./P.M.方式显示是上午还是下午

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%p')
'PM'

%S 显示0-59之间的秒数

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%S')
'29'

%U 显示一年中的第几周,星期天为一周的第一天,例如当前www.jb51.net服务器时间为2013年9月15日,星期天,显示为第37周

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%U')
'37'

%w  显示一周中的第几天,其中星期天为0,星期一为1,例如:jb51.net当前日期为2013年9月17日星期二,则显示结果为2

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%w')
'2'

%W 显示一年中的第几周,和U%把不同的是星期一为一周的第一天,例如当前www.jb51.net服务器时间为2013年9月17日,星期二,显示为第37周,范围在0-51之间

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%W')
'37'

%x 显示当地的日期,例如jb51.net本地时间为:北京时间2013年9月17日

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%x')
'09/17/13'

%X 显示当地的时间,例如jb51.net本地时间为:北京时间2013年9月17日 07:55:04

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%X')
'07:55:04'

%y 显示(00 - 99) 之间的年份,例如:jb51.net服务器时间为:2013年9月17日,则显示结果为13

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%y')
'13'

%Y 显示完整年份,例如:jb51.net服务器时间为:2013年9月17日,则显示结果为2013

>>> import datetime
>>> now=datetime.datetime.now()
>>> now.strftime('%Y')
'2013'

%z, %Z 输出时区,如果不能显示,则显示为空字符 %%  用于显示%符号

>>> now.strftime('%%')
'%'

在举一个完整的例子: 
显示当前日期时间:格式为:年-月-日 时:分:秒

>>> datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S');
'2013-09-17 08:06:17'