[Python3 填坑] 006 “杠零”,空字符的使用

目录


1. print( 坑的信息 )

  • 挖坑时间:2019/01/08
  • 明细
坑的编码 内容
Py004-5 \0 这个空字符怎么用



2. 开始填坑

(1) \0 是空字符,输出时看不到它,但它占 1 个字符的长度

  • 示例
# 例1

str1_1 = "I am YorkFish."
str1_2 = "I am York\0Fish."

print("str1_1 =", str1_1)
print("str1_2 =", str1_2)
print("len(str1_1) =", len(str1_1))
print("len(str1_2) =", len(str1_2))
  • 运行结果

str1_1 = I am YorkFish.
str1_2 = I am YorkFish.
len(str1_1) = 14
len(str1_2) = 15


(2) \0 遇八进制失效

  • 示例
# 例2

str2_1 = "ab\66cd"
str2_2 = "ab\066cd"

print("str2_1 =", str2_1)
print("str2_2 =", str2_2)       # 若 \0 生效,则输出 ab66cd
print("len(str2_1) =", len(str2_1))
print("len(str2_2) =", len(str2_2))
  • 运行结果

str2_1 = ab6cd
str2_2 = ab6cd
len(str2_1) = 5
len(str2_2) = 5


(3) \0'' 不是同一个东西

  • 示例
# 例3

if '\0' == '':
    print("YES")
else:
    print("NO")
  • 运行结果

NO


(4) \0None 不是同一个东西

  • 示例
# 例4

if '\0' == None:
    print("YES")
else:
    print("NO")
  • 运行结果

NO


(5) 有时,\0None 是一伙儿的

  • 补充 filter(function or None, iterable) 的用法
  • 释义
    • filter() 用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象
    • 如果要转换为列表,可以使用 list()
    • filter() 接收两个参数,第一个为函数,第二个为序列
    • 序列的每个元素作为参数传递给函数进行判,将返回 True 的元素放到新列表中
# 补例

def is_even(n):     # 筛选偶数
    return n % 2 == 0
 
tmp_list = filter(is_even, [1, 2, 3, 4, 5, 6])
new_list = list(tmp_list)
print(new_list)
  • 运行结果

[2, 4, 6]


  • 示例
# 例5

list5 = ['1', '2', '3', '\0', '', '   ', None]
print(list(filter(None, list5)))
  • 运行结果

['1', '2', '3', '\x00', ' ']

\0 以十六进制被表示出来,'' 与 None 被剔除了,' ' 看似什么都没有,其实空格也是值。


我的学识有限,如果有同学、老师或者前辈看到我写的东西,发现错误之处,还请不吝赐教!谢谢!

猜你喜欢

转载自www.cnblogs.com/yorkyu/p/10316022.html