这一节了解一下Python中的字符串,字符串是Python中最常用的数据类型。简单总结如下:
API:
1 字符串下标 s[index]:通过数字下标获取字符串单个字符,下标从0开始,支持负数下标从末尾倒数。
char = s[下标] spam = 'Hello world!; spam[0] → 'H'; spam[-1] → '!'2 字符串切片s[start:end]:截取子串,包含 start 下标,不包含 end 下标;start 省略从头,end 省略到末尾。
subStr = s[起始:结束] spam[0:5] → 'Hello'; spam[6:] → 'world!'3 in 运算符a in b:判断字符串 a 是否存在于字符串 b,返回布尔 True/False,区分大小写。
boolRes = 子串 in 原字符串 'Hello' in 'Hello World' → True; 'HELLO' in 'Hello World' → False4 not in 运算符a not in b:判断字符串 a 不在字符串 b 内,返回布尔。
boolRes = 子串 not in 原字符串 'cats' not in 'cats and dogs' → False5 s.upper():返回全部字母转为大写的新字符串,原字符串不改变;非字母不变。
newS = s.upper() 'Hello world!'.upper() → 'HELLO WORLD!'6 s.lower():返回全部字母转为小写新字符串,原字符串不变。
newS = s.lower() 'HELLO WORLD!'.lower() → 'hello world!'7 s.isupper():字符串至少包含一个字母,并且全部字母大写返回 True,否则 False。
boolRes = s.isupper() 'HELLO'.isupper() → True; '12345'.isupper() → False8 s.islower(): 字符串至少包含一个字母,全部字母小写返回 True,否则 False。
boolRes = s.islower() 'abc12345'.islower() → True; 'Hello'.islower() → False9 s.isalpha():非空,且全部由字母组成返回 True。
boolRes = s.isalpha() 'hello'.isalpha() → True; 'hello123'.isalpha() → False10 s.isalnum():非空,全部由字母 + 数字组成返回 True。
boolRes = s.isalnum() 'hello123'.isalnum() → True11 s.isdecimal():非空,全部由数字字符返回 True。
boolRes = s.isdecimal() '123'.isdecimal() → True12 s.isspace():非空,全部由空格、制表符、换行空白字符返回 True
boolRes = s.isspace() ' '.isspace() → True13 s.istitle():每个单词首字母大写,其余小写返回 True。
boolRes = s.istitle() 'This Is Title Case'.istitle() → True14 s.startswith(sub):判断字符串是否以 sub 子串开头,返回布尔
boolRes = s.startswith(子串) 'Hello world!'.startswith('Hello') → True15 s.endswith(sub):判断字符串是否以 sub 子串结尾,返回布尔。
boolRes = s.endswith(子串) 'Hello world!'.endswith('world!') → True16 sep.join(list_str):在 sep 字符串上调用,接收字符串列表,用 sep 拼接列表全部元素返回大字符串。
newStr = 分隔符.join(字符串列表) ', '.join(['cats','rats','bats']) → 'cats, rats, bats'17 s.split(sep):把字符串按照 sep 分割,返回字符串列表;不传 sep 默认按所有空白分割。
strList = s.split(分割标记) 'My name is Simon'.split() → ['My','name','is','Simon']18 s.rjust(width):右对齐,返回总长度 width 的新字符串,左侧填充空格;可传第二个参数自定义填充字符。
newS = s.rjust(总宽度[,填充字符]) 'Hello'.rjust(10) → ' Hello'19 s.ljust(width):左对齐,返回总长度 width 新字符串,右侧填充空格,支持自定义填充字符。
newS = s.ljust(总宽度[,填充字符]) 'Hello'.ljust(10, '-') → 'Hello-----'20 s.center(width):居中对齐,返回总长度 width 字符串,两边填充空格,支持自定义填充字符。
newS = s.center(总宽度[,填充字符]) 'Hello'.center(20, '=') → '=======Hello========'21 s.strip():删除字符串两端空白(空格、制表、换行);可传入字符集合参数删除两端指定字符。
newS = s.strip([要删除的字符]) ' Hello World '.strip() → 'Hello World'22 s.lstrip():只删除字符串左侧空白,支持指定删除字符集。
newS = s.lstrip([要删除字符]) ' Hello World '.lstrip() → 'Hello World '23 s.rstrip():只删除字符串右侧空白,支持指定删除字符集。
newS = s.rstrip([要删除字符]) ' Hello World '.rstrip() → ' Hello World'24 原始字符串前缀r'string':r 放在引号前,忽略全部转义符,反斜杠原样保留,多用于正则。
rawS = r'带\反斜杠内容' print(r'That is Carol\'s cat.')原样输出反斜杠。25 三重引号多行字符串'''xxx''' / """xxx""":保留换行、引号,直接写多行文本,不需要 \n 转义;也常做多行注释。
multiS = '''第一行 第二行''' text = '''Dear Alice, Eve's cat has been arrested. Sincerely, Bob'''26 pyperclip.copy(text): pyperclip 第三方模块函数,把文本复制到系统剪贴板。
pyperclip.copy(待复制文本) pyperclip.copy('Hello world!')27 pyperclip.paste():pyperclip 模块函数,读取剪贴板内容,返回剪贴板字符串。
clipText = pyperclip.paste() text = pyperclip.paste()28 转义字符\' \" \t \n \\:反斜杠开头,表示特殊字符;\'单引号,\"双引号,\t制表,\n换行,\\输出反斜杠本身。
s = '字符串带\n换行\'单引号' print("Hello there!\nHow are you?")栗子:
print("==== 用户信息录入 ====") username = input("请输入你的姓名:").strip() age_str = input("请输入你的年龄数字:").strip() if not username.isalpha(): print("错误:姓名只能是字母,不能数字符号") else: name_low = username.lower() if 'alice' in name_low: print(f"检测到名字包含Alice,欢迎 {username}") else: print(f"你输入名字:{username.title()}") while not age_str.isdecimal(): print("年龄必须输入数字!") age_str = input("重新输入年龄:").strip() age = int(age_str) print(f"你的年龄:{age}") print("-"*30) print("姓名".ljust(12,'.') + username.rjust(10)) print("年龄".ljust(12,'.') + age_str.rjust(10))import pyperclip clip_text = pyperclip.paste() line_list = clip_text.split('\n') for index in range(len(line_list)): line_list[index] = "* " + line_list[index] new_text = '\n'.join(line_list) pyperclip.copy(new_text) print("处理完成!剪贴板现在已经带*无序列表标记,可以直接粘贴。") print("预览输出:") print(new_text)