python学习_21

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习_21相关的知识,希望对你有一定的参考价值。

string模块

>> import string
>> string.ascii_letters
‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘

>> string.ascii_lowercase
‘abcdefghijklmnopqrstuvwxyz‘

>> string.ascii_uppercase
‘ABCDEFGHIJKLMNOPQRSTUVWXYZ‘

>> string.digits
‘0123456789‘

>> string.punctuation
‘!"#$%&‘()*+,-./:;<=>[email protected][]^_`{|}~‘

>> string.octdigits
‘01234567‘

>> string.hexdigits
‘0123456789abcdefABCDEF‘

利用string.punctuation去除特殊字符
s = "I?am?a?boy,?you?r?a?girl!?yes!"

>> list(map(lambda x:x.strip(string.punctuation),s.split()))
[‘I‘, ‘am‘, ‘a‘, ‘boy‘, ‘you‘, ‘r‘, ‘a‘, ‘girl‘, ‘yes‘]

lower()
转换为小写

>> "ABC".lower()
‘abc‘

>> "A".lower() =="a"
True
>> "a".lower() =="a"
True

upper()
转为大写

>> "abc".upper()
‘ABC‘

capitalize()
首字母大写

>> "you are".capitalize()
‘You are‘

title()
每个单词首字母大写

>> "you are".title()
‘You Are‘

swapcase()
大小写转换

>> "ABC xyz".swapcase()
‘abc XYZ‘

>> "aba".swapcase()
‘ABA‘

string.capwords()
String 模块的大小写转换行数

>> string.capwords("abc ddd")
‘Abc Ddd‘

ljust(width[, fillchar])
左对齐,长度不足n,用指定字符填充,默认空格填充

>> "abc".ljust(10,"*")
‘abc***
>> "abc".ljust(10)
‘abc ‘

rjust(width[, fillchar])
右对齐,长度不足n,用指定字符填充,默认空格填充

>> "abc".rjust(10)
‘ abc‘
>> "abc".rjust(10,"*")
‘***abc‘
center(width[, fillchar])
居中对齐,长度不足n,用指定字符填充,默认空格填充
>> "abc".center(10)
‘ abc ‘
>> "abc".center(10,"#")
‘###abc####‘

zfill(width)
把S变成width长,并在右对齐,不足部分用0补足

>> "123".zfill(8)
‘00000123‘

>> "abc".zfill(10)
‘0000000abc‘

find(substr[,star[,end]])
在指定范围内搜索字符串,找不到返回-1,找到返回索引位置,从左侧开始搜索

>> "123".find("2")
1

>> "abc".find("aa")
-1
>> "abc".find("a",2)
-1
>> "abc".find("a",1,3)
-1
index(substr[,star[,end]])
在指定范围内搜索字符串,找不到报错,找到返回索引位置

>> "abc".index("a")
0

>> "abc".index("aa")
Traceback (most recent call last):

ValueError: substring not found

rfind(substr[,star[,end]])
在指定范围内搜索字符串,找不到返回-1,找到返回索引位置,从右侧开始搜索

>> "abcda".rfind("a")
4
>> "abcda".rfind("aa")
-1

rindex(substr[,star[,end]])

>> "abca".rindex("a")
3

replace(old, new[, count])
可指定替换次数

>> "abcda".replace("ab","x")
‘xcda‘
>> "abcda".replace("ab","x",3)
‘xcda‘
>> "abcda".replace("a","x",1)
‘xbcda‘

删除空格

>> "ab cd ef dd".replace(" ","")
‘abcdefdd‘

expandtabs
Tab空格替换成1个空格

>> "a c d d".expandtabs(1)
‘a c d d‘

>> "a c d d".replace(" "," ")
‘a c d d‘
>> "a c d d".replace(" "," ")
‘a c d d‘

split(split_str,times)
按指定字符分割字符串,可指定分割次数,没有指定默认全部分割

>> "a b c d".split()

[‘a‘, ‘b‘, ‘c‘, ‘d‘]

>> "a b c d".split()
[‘a‘, ‘b‘, ‘c‘, ‘d‘]

>> "abcd".split("",1)
[‘a‘, ‘bcd‘]

rsplit(split_str,times)

>> "a b c d".rsplit(" ",1)
[‘a b c‘, ‘d‘]
>> "abcd".rsplit("",2)
[‘a*b‘, ‘c‘, ‘d‘]

s.splitlines([keepends])
把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而
会保留行分割符

>> s = "1 2 "
>> s.splitlines()
[‘1‘, ‘2‘]
>> s.splitlines(1)#1表示输出换行符
[‘1 ‘, ‘2 ‘]

>> s = "1 2 "
>> s.splitlines()
[‘1‘, ‘2‘]
>> s.splitlines(1)
[‘1 ‘, ‘2 ‘]
>> s.splitlines(True)
[‘1 ‘, ‘2 ‘]
>> s.splitlines(False)
[‘1‘, ‘2‘]
>> s.splitlines(0)
[‘1‘, ‘2‘]

join(iterable)
将可迭代对象拼接成字符串

拼接列表

>> "".join(["1","2","3"])
‘123‘

拼接元组

>> "".join(("1","2","3"))
‘123‘

拼接字典,只对key有效

>> "".join({"a":1,"b":2})
‘ab‘
拼接集合
>> "".join({"a","b"})
‘ba‘

startswith(prefix[, start[, end]])

>> "abc d".startswith("a")
True

endswith(prefix[, start[, end]])

>> "abc d".endswith("a")
False

isalpha()

>> "ab".isalpha()
True

isdigit()

>> "ab".isdigit()
False

isalnum()

>> "ab2".isalnum()
True

isspace()

>> " ".isspace()
True
>> " ".isspace()
True

习题6:判断一下这句话,有几个数字和几个空白,和几个字母其他字符有几个


"I?am?a?12?years?old?boy!?hi,me!" 

s = "I am a 12 years old boy! hi,me"

d_num =0
letter_num = 0
space_num = 0
other_num = 0

for v in s:
    if v.isalpha():
        letter_num += 1
    elif v.isdigit():
        d_num += 1
    elif v.isspace():
        space_num += 1
    else:
        other_num += 1

print(d_num)
print(letter_num)
print(space_num)
print(other_num)

islower()

>> "abc".islower()
True

isupper()

>> "abc".isupper()
False

istitle()
是否只有首字母都是大写

>> "AB DDD".istitle()
False
>> "Ab Dddd".istitle()
True

maketrans
map = str.maketrans(‘123‘, ‘abc‘)
s = ‘54321123789‘
print (s.translate(map))

t=bytes.maketrans(b‘abc‘,b‘ABC‘)
print?(b‘abc123‘.translate(t,b"123"))
替换abc,并删除123

>>?print?(b‘abc321‘.translate(t,b"123"))
b‘ABC‘

判断字符集
import chardet

>> chardet.detect("的的的方式的离开尖峰时刻连接方式尖峰时刻积分".encode("gbk"))
{‘encoding‘: ‘GB2312‘, ‘confidence‘: 0.99, ‘language‘: ‘Chinese‘}

Base64编、解码
import?base64
encodestr?=??base64.b64encode(b‘I?love?you‘)
print(encodestr)
print(base64.b64decode(encodestr))

Isinstance()判断类型

>> isinstance("a",str)
True
>> isinstance(b"a",bytes)
True
>> isinstance(b"a",(str,bytes))
True

Python3 ord chr

>> ord("的")
30340
>> chr(33333)
‘舵‘
>> chr(33335)
‘舷‘

count(sub[, start[, end]])

>> "ab".count("a")
1
>> "ab".count("a",2)
0
>> [1,1,2,3].count(1)
2
>> (1,2,3,4).count(1)
1

自定义split
class MyStrMethod(object):

@classmethod
def split2(cls,arr,split_str=None,times=None):
    if split_str == None:
        split_str = " "
    if times== None:
        times = arr.count(split_str)

    split_str_length = len(split_str)
    print(split_str_length)
    print(split_str)
    result = []
    index = 0
    while index < len(arr) and times >0:
        temp = ""
        for i in range(index,len(arr)):

            if arr[i:i+split_str_length] != split_str:
                temp += arr[i]
                index += 1
            else:

                index += split_str_length
                break
        result.append(temp)
        times -= 1
    if times < len(arr):
        result.append(arr[index:])

    return result

m = MyStrMethod()

print(m.split("a*b*c*d","*"))
print(m.split2("a*b*c*d","*"))
print(m.split2("a b c d"))
print(m.split2("a*b*c*d","*",1))
print(m.split2("a**b**c**d","**"))
print(m.split2("a**b**c**d","**",2))

以上是关于python学习_21的主要内容,如果未能解决你的问题,请参考以下文章

20171121_Python学习六周二次课(11月21日)

21天学习python编程_while语句

python 机器学习有用的代码片段

学习笔记:python3,代码片段(2017)

python学习_21

20200527----python学习第21天