最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Python String字符串实例讲解

XAMPP案例 admin 323浏览 0评论

drr00067

字符串定义

注意:python里面没有”字符”类型,只有字符串

单独使用单、双引号

>>> 'spam eggs'# sing quotes
'spam eggs'
>>> "spam eggs"
'spam eggs'

说明:字符串以单引号('……')或双引号标识("……")

混用单、双引号

>>> '"yes", he said'
'"yes", he said'
>>> "'yes', he said"
"'yes', he said"

注意:如果字符串头尾使用的是单引号,那么中间包含的双引号被视为普通字符,反之亦然

单独使用三单、双引号(”’、”””)

>>> """yes
... he
... said"""
'yes\nhe\nsaid'

>>> '''yes
... he
... said'''
'yes\nhe\nsaid'

注意:

  1. 行末端包含在字符串中,所以显示包含字符\n
  2. 三单引号、三双引号一般用于跨行字符串输入
  3. 建议:如果字符串包含单引号且无双引号则用双引号标识,否则用单引号标识,更有可读性。

字符转义

>>> 'doesn\'t'
"doesn't"
>>> "he said \"yes\" "
'he said "yes" '
>>> "%%behaves differently when combined with other letters,like: %%d %%s %%f %d
" % 10
'%behaves differently when combined with other letters,like: %d %s %f 10'

注意:
1.如果字符串头尾使用的是单引号,那么中间包含的单引号必须改成转义字符,双引号亦然
2.\':转义字符 ' , \" 为转义字符 ", %%  为转义字符 %

字符串输出

print()输出函数使得输出更可读。

>>> '"Isn\'t", he said'  #注意:此种情况下未转义 
'"Isn\'t", he said' 
>>> print('"Isn\'t," she said') 
"Isn't," she said 
  
>>> s = 'First line.\nSecond line.'  #\n意为换行 
>>> s 
'First line.\nSecond line.'   #注意:未使用print(), \n包含在输出结果中 
>>> print(s)#使用print()函数,换行输出结果 
First line. 
Second line. 
  
>>> print("""test 
... usage:thiny [OPTIONS] 
... -h display this usage message 
... -H hostname 
... """) 
test 
usage:thiny [OPTIONS] 
-h display this usage message 
-H hostname 
  
  
>>> print("""test\ 
... usuage:thiny[options]\ 
... H hostname 
... -h hostname 
... """) 
testusuage:thiny[options]H hostname 
-h hostname 

说明:可用符号 \ 来取消跨行输出

禁止字符转义

>>> print('c:\some\name')  #这里的\n被解释为换行 
c:\some 
ame 
>>>print(r'c:\some\name') # 注意引号前的 r 
c:\some\name  #这里注意不换行 

说明:如果不想使用转义字符,则可在第一个引号前添加字符r

字符串连接

用 + 号连接字符串

>>> 'hello' + ' ' + 'shouke'
'helloshouke'
>>> prefix = 'Py'
>>> prefix + 'thon'
'Python'
>>> ('un' * 3)+'me'
'unununme'
>>> "shouke" + str(2014)
'shouke2014'

说明:可用+号连接变量或者变量与字符串

用“空格”连接字符串

>>> 'hello' "shouke"
'helloshouke'

注意:

  1. 不管两字符串之间有多少个空格都被看作一个空格

  2. 尽量不要用空格连接字符串

  3. 两者都必须是字符串,不适用于变量或表达式。举例如下:

>>> prefix = 'Py'
>>>prefix 'thon' # can't concatenate a variable and string literal
  File "<stdin>", line 1
prefix 'thon' # can't concatenate a variable and string literal
                ^
SyntaxError: invalid syntax

>>> ('un'*3)'ium'
  File "<stdin>", line 1
    ('un'*3)'ium'
                ^
SyntaxError: invalid syntax

用 * 号重复字符串

>>> 3 * "hello" + " shouke"
'hellohellohelloshouke'

注意:数字必须写在前,否则出错,如果要换化顺序则必须采用括号,如上

非法赋值


>>> word = "shouke"
>>> word[0] = 'j'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
>>> word[2:] = 'py'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

说明:不允许利用索引或切片改变获取的字符、字符串,但是可用+号来连接获取的字符串,如下:

>>> "i" + word[:4]
'ishou'

字符串函数

join函数

>>> "shouk".join("ie")
'ishouke'
>>> "p".join("ishouke")
'ipsphpopupkpe'

>>> list = ["i", "am", "a", "tester"]
>>> "e".join(list)
'ieameaetester'
>>> list = ["i", " am", " a", " tester"]
>>> "e".join(list)
'ieameae tester'

注意以下情况

>>> "shouk".join("")
''
>>> "shouk".join("e")
'e'

>>> list = ["i"]
>>> "e".join(list)
'i'

注意:

  1. str1.join(str2) ,str2必须至少包含两个字符,形如‘ab’才能插入str1,生成astr1b,str1.join(list),类似str,list也至少要包含两个元素

  2. str1.join(str2),str1插入到str2字符串中的第一个字符和第二字符中间,类似的,str1.join(list),str1插入到list中的第一个元素和第二个元素中间

  3. 不是每种字符串都可用于分隔符

>>> "\".join("test")
  File "<stdin>", line 1
    "\".join("test")
                 ^
SyntaxError: invalid syntax

技巧:利用join将list转为字符串

>>> list = ["hi", "i", "shou", "ke"]
>>> "".join(list)
'hiishouke'

注意:list中元素不能是整数,如下,报错了

>>> list = [2014, "i", "shou", "ke"]
>>> "".join(list)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found

replace函数

str.replace(old, new[, max])

参数说明:

old — 将被替换的子字符串。

new — 新字符串,用于替换old子字符串。

max — 可选字符串, 替换不超过 max 次

>>> "tea for too".replace("too", "two")
'tea for two'

注意:字符串本身并不没改变,仅是返回一个新的字符串,如下:

>>> str = "shouke"
>>> new_str = str.replace("ke", " ke")
>>> new_str
'shouke'
>>> str
'shouke'

startswith函数

判断字符串是否以指定字符或子字符串开头

string.startswith(str[, beg=0[, end=len(string)]])

参数说明:

string:被检测的字符串

str:指定的字符或者子字符串。(可以使用元组,会逐一匹配)

beg:设置字符串检测的起始位置(可选)

end:设置字符串检测的结束位置(可选),不包含结束位置的字符

如果存在参数 beg 和 end,则在指定范围内检查,否则在整个字符串中检查

返回值

如果如果字符串string是以str开始,则返回True,否则返回False。默认空字符为True

>>> str = 'hello shouke'
>>> str.startswith('h')
True
>>> str.startswith('hello')
True
>>> str.startswith('h', 4)
False
>>> str.startswith('shou', 6, 10)
True
>>> str.startswith('shou', 6, 9) # 不包含结束位置的字符
False

#匹配空字符
>>> str.startswith('')
True

#匹配元组
>>> str.startswith(('h', 'e', 'l') )
True

endswith函数

判断字符串是否以指定字符或子字符串结尾

str.endswith(suffix[, start[, end]]) 

参数说明:

str:被检测的字符串

suffix:指定的字符或者子字符串。(可以使用元组,会逐一匹配)

start:设置字符串检测的起始位置(可选)

end:设置字符串检测的结束位置(可选),不包含结束位置的字符串

如果存在参数 start 和 end,则在指定范围内检查,否则在整个字符串中检查

返回值

如果字符串以指定字符或子字符串结尾,则返回True,否则False。

>>> 'shouke'.endswith('ke')
True
>>> 'shouke'.endswith('ke', -2, -1) #不包含结束位置的字符串
False
>>> 'shouke'.endswith('k', -2, -1)
True

upper函数

>>> str = "shouke"
>>> str.upper()
'SHOUKE'

lower函数

>>> str = "SHOUKE"
>>> str.lower()
'shouke'

sdigit ()函数

判断字符串中所有字符是否都为字母数字,是则返回True,否则False

>>> str = "12345"
>>> str.isdigit()
True
>>> str = "12345s"
>>> str.isdigit()
False
>>> '0.1'.isdigit()
False

isalpha()函数

判断字符串中所有字符是否都为英文字母(A-Z, a-z),是则返回True,否则返回False

>>> "Ishouke2014".isalpha()
False
>>> "Ishouke".isalpha()
True

isalnum()函数

判断字符串中所有字符是否都为英文字母或数字字符,是则返回True,否则返回False

>>> "Ishouke2014*".isalnum()
False
>>> "Ishouke2014".isalnum()
True

split函数

str.split(sep=None, maxsplit=-1) 

返回一个字符串列表,其中每个元素为源字符串中,由分隔符(如果有的话)分隔开的子字符串

>>> str = 'hi|shou|ke|'

>>> str.split('|')
['hi', 'shou', 'ke', '']

说明:分隔后产生的子字符串如果为空,则返回 ”

>>> str.split('|', 1)
['hi', 'shou|ke|']

说明:maxsplit设置了分割次数

>>> str.split()
['hi|shou|ke|']

说明:如果不指定sep,则将整个字符串当作一个子字符串

>>> str = 'hi shouke'
>>> str.split()
['hi', 'shou', 'ke']

>>>str.split(None)
['hi', 'shou', 'ke']

说明:如果源字符串中的子字符串由空格分隔,那么如果不指定sep,或者指定sep为None,则以空格为分隔符

strip([chars]) & rstrip([chars]) & lstrip([chars])函数

移除给定字符串左右两端的指定字符,默认为空格,TAB,换行等空白字符

>>> str = ' shouke  '.strip()
>>> str
'shouke'
>>> str = 'shouke  '.rstrip()
>>> str
'shouke'
>>> str = '  shouke'.lstrip()
>>> str
'shouke'

>>> str = '|shouke|'.strip('|')
>>> str
'shouke'
>>> str = '|shouke|'.lstrip('|')
>>> str
'shouke|'
>>> str = '|shouke|'.rstrip('|')
>>>str
'|shouke'

注意:左端、右端“靠端”的字符子串如果包含在函数参数 chars 中则被去掉,如下

>>> 'mystringi'.rstrip('myit')
'mystring'
>>> 'mystringit'.rstrip('myit')
'mystring'
>>> 'mystringitt'.rstrip('myit')
'mystring'

>>> 'mystringitt'.strip('myit')
'string'

>>> 'mystringitth'.rstrip('myit')
'mystringitth'

find函数

找到包含给定字符串则返回起起始位置,索引从0开始,否则返回-1

>>> str = 'This is a string'
>>> str2 = str.find('shou')
>>> str2
-1
>>> str2 = str.find('is')
>>> str2
2

字符串类属性

string.ascii_lowercase

功能:返回所有小写的ASCII字符

例子:

>>> import string
>>> print(string.ascii_lowercase)
abcdefghijklmnopqrstuvwxyz
string.ascii_uppercase

功能:返回所有大写的ASCII字符

>>> print(string.ascii_uppercase)
ABCDEFGHIJKLMNOPQRSTUVWXYZ

类型转换

把字符串转为int

>>> str = '10'
>>> num = int(str)
>>> num
10

注意:只适合数字型的字符串

把字符串转为bool条件表达式

>>> condition = '0 == 0 and 1 == True'
>>> re = eval(condition)
>>> re
True

把字符串转为字节数据

>>> print(bytes('shouke', 'utf-8'))
b'shouke'
>>> 'shouke'.encode('utf-8')
b'shouke'

3、把字节数据转为字符串

>>> b'shouke'.decode('utf-8')
'shouke'

工具函数

获取字符的ASCII码

>>> ord("A")
65

注意:只能用于包含单个字符的字符串

将ASCII码转换为字符

>>> chr(65)
'A'

转载请注明:XAMPP中文组官网 » Python String字符串实例讲解

您必须 登录 才能发表评论!