专栏名称: Python技术博文
分享有关Python知识,了解IT界最新技术,让我们一起从菜鸟变成大牛吧!
目录
相关文章推荐
Python爱好者社区  ·  史上最强!LSTM杀疯了 ·  17 小时前  
Python中文社区  ·  用 LSTM 机器学习模型预测股票价格并自动下单 ·  2 天前  
Python爱好者社区  ·  大语言模型基础与前沿.pdf ·  4 天前  
Python爱好者社区  ·  《大语言模型》教材发布,开源! ·  1 周前  
Python爱好者社区  ·  IT工程师在工作电脑存储64G色情内容,公司 ... ·  1 周前  
51好读  ›  专栏  ›  Python技术博文

python学习笔记

Python技术博文  · 公众号  · Python  · 2017-09-04 12:00

正文

Python中%r和%s的区别

%r用rper()方法处理对象

%s用str()方法处理对象

函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式(如果没有等价的语法,则会发生SyntaxError 异常) 某对象没有适于人阅读的解释形式的话, str() 会返回与repr()等同的值。很多类型,诸如数值或链表、字典这样的结构,针对各函数都有着统一的解读方式。

有些情况下,两者处理的结果是一样的,比如说处理int型对象。

例一:

1
2
3
print "I am %d years old." % 22
print "I am %s years old." % 22
print "I am %r years old." % 22


返回结果:

1
2
3
I am 22 years old.
I am 22 years old.
I am 22 years old.


另外一些情况两者就不同了

例二:

1
2
3
text = "I am %d years old." % 22
print "I said: %s." % text
print "I said: %r." % text


返回结果:

1
2
I said: I am 22 years old..
I said: 'I am 22 years old.'.   #%r 给字符串加了单引号


再看一种情况

例三:

1
2
3
4
import datetime
d = datetime.date.today()
print "%s" % d
print "%r" % d


返回结果:

1
2
2017-08-16
datetime.date(2017, 8, 16)


可见,%r打印时能够重现它所代表的对象(rper() unambiguously recreate the object it represents)

python拆分中英文混合字符串 - 按中文拆分

#coding=utf-8
import re
= 'hi新手oh'.decode('utf-8'#字符串s,为了匹配下文的unicode形式,所以需要解码
= re.compile(ur'[\u4e00-\u9fa5]'#这里是精髓,[\u4e00-\u9fa5]是匹配所有中文的正则,因为是unicode形式,所以也要转为ur
   
print p.split(s) #使用re库的split切割


输出:[u'hi', u'', u'oh']

python字符串连接的三种方法及其效率、适用场景详解

python字符串连接的方法,一般有以下三种:

方法1:直接通过加号(+)操作符连接

1
website = 'python' + 'tab' + '.com'

方法2:join方法

1
2
listStr = ['python''tab''.com'
website = ''.join(listStr)

方法3:替换

1
website = '%s%s%s' % ('python''tab''.com')


下面再来说一下三种方法的不同

方法1,使用简单直接,但是网上不少人说这种方法效率低

之所以说python 中使用 + 进行字符串连接的操作效率低下,是因为python中字符串是不可变的类型,使用 + 连接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当连续相加的字符串很多时(a+b+c+d+e+f+...) ,效率低下就是必然的了


方法2,使用略复杂,但对多个字符进行连接时效率高,只会有一次内存的申请。而且如果是对list的字符进行连接的时候,这种方法必须是首选


方法3:字符串格式化,这种方法非常常用,本人也推荐使用该方法


下面用实验来说明字符串连接的效率问题。

1
2
3
比较对象:加号连接 VS join连接
python版本: python2.7
系统环境:CentOS

实验一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- coding: utf-8 -*-
from time import time
def method1():
    = time()
    for in xrange(100000):
        = 'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'
    print time() - t
def method2():
    = time()
    for in xrange(100000):
        = ''.join(['pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab'])
    print time() -t
method1()
method2()

结果:

1
2
0.641695976257
0.341440916061


实验二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- coding: utf-8 -*-
from time import time
def method1():
    = time()
    for in xrange(100000):
        = 'pythontab'+'pythontab'+'pythontab'+'pythontab'
    print time() - t
def method2():
    = time()
    for in xrange(100000):
        = ''.join(['pythontab','pythontab','pythontab','pythontab'])
    print time() -t
method1()
method2()

结果:

1
2
0.0265691280365
0.0522091388702


上面两个实验出现了完全不同的结果,分析这两个实验唯一不同的是:字符串连接个数。

结论:加号连接效率低是在连续进行多个字符串连接的时候出现的,如果连接的个数较少,加号连接效率反而比join连接效率高。


推荐阅读:

Python的编码命名规则

python 数组的del ,remove,pop区别

[笔记]使用Python一步一步地来进行数据分析

提升 Python 编程效率的十点建议

Python的zip函数

如何优雅的使用Python

Python初学者的17个技巧


推荐文章
Python爱好者社区  ·  史上最强!LSTM杀疯了
17 小时前
Python爱好者社区  ·  大语言模型基础与前沿.pdf
4 天前
Python爱好者社区  ·  《大语言模型》教材发布,开源!
1 周前
72变  ·  带娃神奇,你不能没有它!
7 年前
婚姻家庭那些事儿  ·  结婚要慢,离婚要快!
7 年前
金乡大蒜辣椒国际交易市场  ·  城里人吃不起,农村人卖不出,这满地的农产品怎么办?
7 年前
微设计  ·  中国 · 窗
7 年前