好冷的Python~奇葩的空字符串

原文链接:http://www.juzicode.com/archives/5699

在Python中可以用下面这种方式定义一个空字符串

a = ''

如果在引号中多输入一个空格的形式定义一个字符串:

b = ' '

这时a和b看起来好像都是“空”的,a和b还是同一个东西吗?它们二者是相等的吗?

#VX公众号: 桔子code / juzicode.com
a = ''
b = ' '
print(a==b)

运行结果:

False

 

从运行结果看,二者并不相等。

另外我们也可以通过计算字符串的长度来看看二者是否相等:

a = ''
b = ' '
print('len(a):',len(a))
print('len(b):',len(b))

运行结果:

len(a): 0 
len(b): 1

从运行结果看二者长度也并不相等,空字符串长度为0,而包含一个空格的字符串长度为1。打个比方空字符串就好像抽成真空的一个瓶子,里面什么都没有,而包含空格的字符串就好像一个看起来的空瓶子,但是里面有空气存在。

 

我们知道可以用关键字in判断子串是否在一个字符串中,下面这个例子判断“c”和“x”是否在“juzicode.com”中:

a = 'juzicode.com' 
print('c' in a) 
print('x' in a) 

得到的结果分别为True和False:

True 
False

空串的一个特性是如果用in判断,它会存在于任何一个字符串中,包括空串本身:

a = 'juzicode.com' 
print('' in a)  
a = 'VX:桔子code' 
print('' in a)  
a = 'orange' 
print('' in a)  
a = 'are you kiding' 
print('' in a)  
a = '' 
print('' in a)  

运行结果:

True
True
True
True
True

另外我们可以用count()计算字符串中包含某个子串的数量,比如要计算“juzicode.com”中”c”和”x”出现的次数:

a = 'juzicode.com'
t = a.count('c') 
print('times of c:',t)
t = a.count('x') 
print('times of x:',t)

运行结果:

times of c: 2 
times of x: 0

 

既然空串存在于任何一个字符串中,我们可以测试下一个字符串中有多少个空字符串:

#VX公众号: 桔子code / juzicode.com
l = 'juzicode.com','VX:桔子code','orange','are you kiding',''
for a in l:  
    print(a)
    t = a.count('')
    print('count of "":',t)
    print('len(a):',len(a))

运行结果:

juzicode.com
count of "": 13
len(a): 12
VX:桔子code
count of "": 10
len(a): 9
orange
count of "": 7
len(a): 6
are you kiding
count of "": 15
len(a): 14

count of "": 1 
len(a): 0

 

从测试的结果看,在一个字符串中空串的长度为字符串长度加1

好了,今天的水文到这里就结束了,通过这些测试例程,我们了解了下空串的特性:空串是不包含任何字符的字符串,其长度为0;如果用in判断,空串存在于任何字符串中包括空串本身;一个字符串包含了字符串长度+1个空串。

 原文链接:http://www.juzicode.com/archives/5699

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注