字符串
字符串
>>> s = "abc" >>> type(s) <class 'str'> # str是Unicode >>> s = "abc".encode("utf-8") >>> type(s) <class 'bytes'> # bytes 用于网络传输,服务器之间的传输 >>> s = "abc".encode() # 可以不加“utf-8”,默认就是utf-8 >>> type(s) <class 'bytes'> >>> import sys >>> sys.getdefaultencoding() 'utf-8'
>>> "中国".encode("gbk") b'\xd6\xd0\xb9\xfa' >>> s = b'\xd6\xd0\xb9\xfa' >>> print(s.decode("gbk")) 中国
-
转义字符
|
转义字符
|
描述
|
|
\
|
\(在行尾时) 续行符,也就是多行语句符
|
|
\\
|
反斜杠符号
|
|
\'
|
单引号
|
|
\"
|
双引号
|
|
\a
|
响铃
|
|
\b
|
退格(Backspace)
|
|
\e
|
转义
|
|
\000
|
空
|
|
\n
|
换行
|
|
\v
|
纵向制表符
|
|
\t
|
横向制表符
|
|
\r
|
回车
|
|
\f
|
换页
|
|
\oyy
|
八进制数yy代表的字符,例如:\o12代表换行
|
|
\xyy
|
十进制数yy代表的字符,例如:\x0a代表换行
|
|
\other
|
其它的字符以普通格式输出
|
-
字符串运算
|
操作符
|
描述
|
实例
|
|
+
|
字符串连接
|
a + b输出结果:HelloPython
|
|
*
|
重复输出字符串
|
a*2输出结果:HelloHello
|
|
[]
|
通过索引获取字符串中字符
|
a[1]输出结果e
|
|
[ : ]
|
截取字符串中的一部分
|
a[1:4]输出结果ell
|
|
in
|
成员运算符-如果字符串中包含给定的字符返回True
|
‘H’ in a输出结果True
|
|
not in
|
成员运算符- 如果字符串中不包含给定的字符返回True
|
‘M’ not in a输出结果True
|
|
r/R
|
原始字符串- 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
|
print r'\n' 和print R'\n'
|
|
%
|
格式字符串
|
|
-
格式化字符串
|
符号
|
描述
|
|
%c
|
格式化字符及其ASCII码
|
|
%s
|
格式化字符串
|
|
%d
|
格式化整数
|
|
%u
|
格式化无符号整型,和%d一致
|
|
%o
|
格式化无符号八进制数
|
|
%x
|
格式化无符号十六进制数
|
|
%X
|
格式化无符号十六进制数(大写)
|
|
%f
|
格式化浮点数,可指定小数点后的位数,默认保留小数点后6位
|
|
%e
|
用科学计数法格式化浮点数
|
|
%E
|
作用同%e,用科学计数法格式化浮点数
|
|
%g
|
%f和%e的简写
|
|
%G
|
%f和 %E的简写
|
|
%p
|
用十六进制数格式化变量的地址
|
-
查看变量指向的地址,用id(),查看字符串是否改变
>>> s = "abc" >>> id(s) 31079592 >>> s1 = "abc" >>> id(s1) 31079592 >>> id("abc") 31079592 >>> s is s1 True
-
拼字符串的方法
>>> "a"+"b"+"c" # 消耗内存 'abc' >>> "".join(["1","2"]) '12' >>> "abc{}".format("x") 'abcx' >>> "abc{1}{0}".format("x","y") 'abcyx' >>> "%s = %s "%(1,2) '1 = 2 ' >>> "%d = %d "%(1,2) '1 = 2 ' >>> "%.2f = %.2f"%(1,2) '1.00 = 2.00'
-
输出所有关键字 keyword
>>> import keyword >>> dir(keyword) ['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'iskeyword', 'kwlist', 'main'] >>> keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if','import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
-
内置方法
>>> s = 'abc' >>> s.startswith("a") # 判断开始位置 True >>> s.endswith("a") # 判断结束位置 False >>> s.endswith("c") True >>> ' \t\n abc '.strip() # 去空白 'abc' >>> ' \t\n abc '.lstrip() # 去除左侧所有空白 'abc ' >>> ' \t\n abc '.rstrip() # 去除右侧所有空白 ' \t\n abc' >>> "****##abc****##".strip("*") '##abc****##' >>> "****##abc****##".strip("#") '****##abc****' >>> "****##abc****".strip("#") '****##abc****' >>> "****##abc****".strip("*") '##abc' >>> "****##abc****".strip("#*") 'abc' >>> "a".upper() # 转换成大写 'A' >>> "aBFR".lower() # 转换成小写 'abfr' >>> "aBFaa".swapcase() # 大转小, 小转大 'AbfAA' >>> "abc bcdd".capitalize() # 首字母大写 'Abc bcdd' >>> "abc bRTYd".capitalize() # 只有首字母大写 'Abc brtyd' >>> import string >>> string.capwords("afsg oiuOOPP") # 每个单词首字母大写 'Afsg Oiuoopp' >>> "abc bRTYd".title() # 每个单词首字母大写 'Abc Brtyd' >>> "abv".ljust(10) # 左对齐 'abv ' >>> >>> "abv".rjust(10) # 右对齐 ' abv' >>> "abv".center(10) # 居中 ' abv ' >>> "abc".rjust(10,"*") '*******abc' >>> "abc".rjust(5,"*") '**abc' >>> "abv".ljust(10,"*") 'abv*******' >>> "abv".rjust(10,"*") '*******abv' >>> "abv".center(10,"*") '***abv****' >>> "abacaaaaddddaauu".find("a") 0 >>> "abacaaaaddddaauu".find("ab") 0 >>> "abacaaaaddddaauu".find("dd") 8 >>> "abacaaaaddddaauu".rfind("dd") 10 >>> "abacaaaaddddaauu".find("ii") # 返回指定子串的最高索引,如果没找到则返回-1,可以指定要开始替换的起始,结束位置。 -1 >>> "a111111z".find("a",1) # 可以按位置查找 -1 >>> "a111111z".find("a",5,10) -1 >>> "a111111z".find("z",5,10) 7 >>> "abacaaaaddddaauu".index("a") 0 >>> "abacaaaaddddaauu".index("da") # 返回索引位置,找不到会报错 11 >>> "abacaaaaddddaauu".index("ii") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: substring not found >>> "abacaaaaddddaauu".count("da") # 统计个数 1 >>> "abacaaaaddddaauu".count("a") 8 >>> "abc".zfill(10) # 这里的z指zero,用0将字符填充到指定长度 '0000000abc' >>> "abca".replace("bc","xxxx") # 用指定字符串替换指定字符串,如果不指定替换次数,则替换所有 'axxxxa' >>> "abca".replace("a","xxxx") 'xxxxbcxxxx' >>> "abca".replace("a","xxxx",1) 'xxxxbca' >>> "ab c a 3 $$".replace(" ","") 'abca3$$' >>> "a b e r".expandtabs(1) # 把字符串的tab字符(\t)转化为空格,如不指定tabsize,默认为8个空格 'a b e r' >>> "a b e r".expandtabs(1) 'a b e r' >>> "ab e r".expandtabs(1) 'ab e r' >>> "ab e r".expandtabs(0) 'aber' >>> "ab er".expandtabs(0) 'aber' >>> "a b c d".split() # 按指定字符串对目标字符串进行切割,可以指定切割次数 ['a', 'b', 'c', 'd'] >>> "a\nb\tc\rd e".split() ['a', 'b', 'c', 'd', 'e'] >>> "a*b*c*d".split() ['a*b*c*d'] >>> "a*b*c*d".split("*") ['a', 'b', 'c', 'd'] >>> "a*b*c*d".split("*",1) ['a', 'b*c*d'] >>> "a*b*c*d".rsplit("*",1) # 从右边开始切割 ['a*b*c', 'd'] >>> s='1\n2\n' # 按换行符切割显示,如没指定keepends=True则将换行符移除 >>> print (s.splitlines()) ['1', '2'] >>> print (s.splitlines(1)) ['1\n', '2\n'] >>> print (s.splitlines(True)) ['1\n', '2\n'] >>> print (s.splitlines(False)) ['1', '2'] >>> "*".join(["1","2","3"]) # 返回一个用指定字符串分隔的字,或者是将指定字符加入到另一个字符中 '1*2*3' >>> "*".join(("1","2","3")) '1*2*3' >>> "abc".isalpha() # 字符串至少有一个字符,并且所有字符都是字母则返回True,否则False True >>> "abc11".isalpha() False >>> "abc11".isalnum() # 字符串至少有一个字符,并且所有字符都是字母或数字则返回True,否则False True >>> "abc11".isdigit() # 字符串只包含数字则返回True,否则返回False False >>> "34541".isdigit() True >>> "345.41".isdigit() False >>> " ".isspace() # 判断字符串中至少有一个字符且所有都是空格,否则返回false True >>> " ".isspace() True >>> "".isspace() False >>> "a".islower() # 字符中至少包含一个能区分大小写的字符,并且这些字符都是小写则返回True,否则返回Flase True >>> "a".isupper() # 字符中至少包含一个能区分大小写的字符,并且这些字符都是大写则返回True,否则返回Flase False >>> "I Am Cboy".istitle() # 检测字符串中所有的单词拼写首字母是否为大写字母,其他为小写字母,并且至少有一个字母,则返回True,否则返回False True >>> "I am Cboy".istitle() False >>> "123".isnumeric() # 如果字符串只包含数字字符,则返回True,否则返回False True >>> "12a3".isnumeric() False >>> "12a3".isdecimal() # 字符串只包含十进制数字则返回True,否则返回False False >>> "123".isdecimal() True >>> map = str.maketrans('123', 'abc') # String.maketrans(from, to) >>> s = '54321123789' # 返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的 >>> print (s.translate(map)) 54cbaabc789 >>> t=bytes.maketrans(b'abc',b'ABC') >>> print(b'abc123'.translate(t,b"123")) # S.translate(table[,deletechars]) b'ABC' # 使用上面的函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果S为unicode字符串,那么就不支持deletechars参数,所以需要使用字节字符串 >>> import string >>> string.ascii_letters # 所有大小写字母 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> string.ascii_lowercase # 小写字母 'abcdefghijklmnopqrstuvwxyz' >>> string.ascii_uppercase # 大写字母 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' >>> string.digits # 数字 '0123456789' >>> string.punctuation # 标点符号 特殊字符 '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

浙公网安备 33010602011771号