Python006

数据在计算机中的存储

字节和字符串相关
内存:
  00000000 00000000 00000000 01010100      unicode A
  01010100                     tf-8 A
  01010100 01010100              gbk A
  01010000 00000100              gb2312 A
  ...

 硬盘:

  01010100                   utf-8 A
  01010100                   utf-8 A
  01010100                   gbk A
  01010100                   gb2312 A
  ...

  本质上,内存中都是0101010,具体是什么样子的01001,需要根据编码来决定。
  不同编码的01010,互相不认识。

在python3中:
  utf-8 -> 010101010101
特殊的:
  字符串: str
    表现: a = "alex"
    本质: 01010101,unicode
  字节:bytes
    表现: a = b"alex"
    本质: 01010101,某种编码: utf-8,gbk,.....
总结:
  python3:
  str --> uniocde
  bytes --> gbk,utf-8.....

在内存中:

  str以Unicode形式存储。4个字节长度。

  其他都是UTF-8形式。3个字节长度。

存储或传输时:

  str要转换成其他编码形式,如UTF-8,GBK,GB2312等。

  其他都是UTF-8、GBK、GB2312。

bit

  bit.length()

  to_bytes()

  from_bytes()

int

#小端
val = 1
result1 = val.bit_length()
print(result1)  #输出:1

result2 = val.to_bytes(4,'little')    #4可以替换为其他数字
print(result2)  #输出:b'\x01\x00\x00\x00\x00\x00'

result3 = val.from_bytes(result2,'little')
print(result3)  #输出:1

#大端
val = 1
result1 = val.bit_length()
print(result1)  #输出:1

result2 = val.to_bytes(5,'big')    #5可以替换为其他数字
print(result2)  #输出:b'\x00\x00\x00\x00\x00\x01'

result3 = val.from_bytes(result2,'big')
print(result3)  #输出:1

 

bool

  True

  False

str

字符串长度的计算。

upper()

lower()

calitalize()

split()

content = 'what ...wrong!!! with you???'
v = content.split('!')
print(v)    #输出:['what ...wrong', '', '', ' with you???']

content = 'what ...wrong!!! with you???'
v = content.split('!',1)
print(v)    #输出:['what ...wrong', '!! with you???']

content = 'what ...wrong!!! with you???'
v = content.split('!',2)
print(v)    #输出;:'what ...wrong', '', '! with you???']

content = 'what ...wrong!!! with you???'
v = content.split('!',3)
print(v)    #输出:['what ...wrong', '', '', ' with you???']

content = 'what is\n...wrong!!! with you???'
v = content.splitlines()
print(v)    #输出:['what is', '...wrong!!! with you???']

 

content = "middle\napi\nDisk"
v = content.splitlines(keepends=True)
print(v)
#输出:['middle\n', 'api\n', 'Disk']

content = "middle\napi\nDisk"
v = content.splitlines(keepends=False)
print(v)
#输出:['middle', 'api', 'Disk']

content = "middle\napi\nDisk"
v = content.splitlines()
print(v)
#输出:['middle', 'api', 'Disk']

 

partition

rpartition

 1 content = "5+9+2"
 2 v = content.partition("-")
 3 print(v)
 4 # 输出('5+9+2', '', '')
 5 
 6 content = "5+9+2"
 7 v = content.rpartition("+")
 8 print(v)
 9 # 输出('5+9', '+', '2')
10 
11 content = "5+9+2"
12 v = content.rpartition("-")
13 print(v)
14 # 输出('', '', '5+9+2')
1 content = 'what the.en!Yeah?'
2 v = content.rpartition('.')
3 print(v)
4 # 输出('what the', '.', 'en!Yeah?')
5 v = content.rsplit('.',1)
6 print(v)
7 # 输出['what the', 'en!Yeah?']

 

1 contest = "What's .wrong .with you ?"
2 v = contest.rpartition('.')
3 print(v)
4 
5 contest = "What's .wrong .with you ?"
6 v = contest.rsplit('.',1)
7 print(v)

 

 1 contest = 'who am i? I am J. I don't know what happened.'
 2 v = contest.split('?')
 3 print(v)
 4 
 5 contest = "who am i? I am J? I don't know what happened."
 6 v = contest.partition('?')
 7 print(v)
 8 
 9 contest = "who am i? I am J? I don't know what happened."
10 v = contest.rpartition('?')
11 print(v)

join()

startswith()

endswith()

isdecimal()

isdigit()

isnumeric()

 1 name = '321'
 2 print(name.isdicimal())
 3 print(name.isdigit())
 4 print(name.isnumeric())
 5 # True True True
 6 
 7 name = ''
 8 print(name.isdicimal())
 9 print(name.isdigit())
10 print(name.isnumeric())
11 # False True True
12 
13 name = '二十'
14 print(name.isdicimal())
15 print(name.isdigit())
16 print(name.isnumeric())
17 # False False True

find()

 1 name = 'Wang qingshuai'
 2 val = name.find('p')
 3 print(val)
 4 # 结果-1
 5 val = name.index('p')
 6 print(val)
 7 # 结果 报错
 8 
 9 name = 'Wang qingshuai'
10 if name.find('a') != -1 :
11     print('I finded it!')

strip()

center()

join

name = '_'.join(['wang','qing','shuai'])
print(name)   #输出:wang_qing_shuai

ljust()

rjust()

name = 'Wang'
val = name.center(20,'*')
print(val)  #********Wang********

name = 'Wang'
val = name.ljust(20,'*')
print(val)  #Wang****************

name = 'Wang'
val = name.rjust(20,'*')
print(val)  #****************Wang

lstrip()

rstrip()

name=' wang '
val=name.lstrip()
print(val)  #'wang '

name=' wang '
val=name.rstrip()
print(val)  #' wang'

name='&*wang&*'
val=name.lstrip('&')
print(val)  #*wang&

name='&*wang&*'
val=name.rstrip('*')
print(val)  #&*wang&

name='&*wang&*'
val=name.rstrip('&')
print(val)  #&*wang&*

count()

name = 'WangQingshuai'
val = name.count('n')
print(val)  #2

name = 'WangQingshuai'
val = name.count('n',0,3)
print(val)  #1

index()

name = 'alexaelx'

val = name.find("f")
print(val)# 没找到返回-1

val = name.index("a")
print(val)  #0

if name.find('ffffff') != -1:
    print('找到了')

casefold()

1 #支持多个语种
2 name = 'Wang'
3 result = name.casefold()
4 print(result)
5 
6 #只支持英语
7 name = 'Wang'
8 result = name.lower()
9 print(result)

expandtabs()制表符

1 name = 'Wang\tQing\tshuai'
2 val = name.expandtabs(5)
3 print(val)
4 
5 # \n
6 # name = "我是app,我\n怕\bug"
7 # # \n ,换行符
8 # # \t,制表符

encode()

 1 name_str = "小王"
 2 name_bytes = name_str.encode('utf-8')
 3 print(name_bytes)
 4 
 5 name_str = "小王"
 6 name_bytes = name_str.encode('gbk')
 7 print(name_bytes)
 8 
 9 # name = "小王"
10 #
11 # # 把字符串(unicode),转换成字节(utf-8)
12 # v1 = name.encode('utf-8')
13 # # 把字符串(unicode),转换成字节(gbk)
14 # v2 = name.encode('gbk')

format

 1 format四种写法:
 2 第一种:
 3 v = 'my name is {0},my age is {1}'
 4 val = v.format('Peter',20)
 5 print(val)
 6 第二种:
 7 v = 'my name is {0},my age is {1}'
 8 val = v.format(*['peter',20])
 9 print(val)
10 第三种:
11 v = 'my name is {name},my age is {age}'
12 val = v.format(name = 'peter',age = 20)
13 print(val)
14 第四种:
15 v = ‘my name is {name}, my age is {age}’
16 dic = {'name':'peter', 'age':20}
17 val = v.format(**dic)
18 print(val)

format_map

v = 'my name is {name}, my age is {age}'
val = v.format_map({'name':'peter','age':20})
print(val)  #my name is peter, my age is 20

isprinttable

name = 'WangQingshuai'
print(name.isprintable())   #True

name = 'Wang\nQingshuai'
print(name.isprintable())   #False

title

istitle

name = 'wang qingshuai'
print(name.title())    #Wang Qingshuai
print(name.istitle())   #False

swapcase

1 name = 'Wang'
2 print(name.swapcase())
3 # 输出 wANG

zfill

1 name = 'Wang'
2 print(name.zfill(10))
3 #输出 000000Wang

maketrans

translate

table = str.maketrans("aeiou",'12345')
msg = "asdefasdfjasdifw[kmnakjudfasdf"
val = msg.translate(table)
print(val)  #1sd2f1sdfj1sd3fw[kmn1kj5df1sdf
# 可以理解为加密

isidentifier ?

name = 'asde'
print(name.isidentifier())  #True

main = 'asde'
print(main.isidentifier())  #True

 

list

append()

insert()

reverse()

del v[0]

 

tuple

 

dict

  get()

  items()

  keys()

  values()

 

posted @ 2017-08-28 18:45  王庆帅  阅读(208)  评论(0)    收藏  举报