贡献者: addis
字符串(string)可以想象成由字符构成的特殊数组,一般用于储存一段文字。一个字符串变量如
s = 'python String 字符串'
注意也可以使用双引号 "..."
。用 type(s)
查看类型得到 str
,即 string 的缩写。
input()
函数可以在程序运行的过程中获取用户输入的字符串,例如
s = input('请输入:')
print('您输入的内容是:', s)
如果希望用户输入其他类型,如整数,那么输入后再进行变量类型转换即可,如 int(s)
。
len(s)
用于获取字符串长度
print('s = ', s, '; length = ', len(s))
也可以用三个单引号或双引号表示多行字符串,如
s = '''这是第一行
这是第二行
这是第三行'''
注意如果第一个 '''
后面必须紧接第一个字符,第二个 '''
必须紧跟最后一个字符。
如果在字符串中要表示一些特殊的字符,我们可以使用 \
开头的转义符(escape character),例如 \n
表示换行,\'
表示单引号,\"
表示双引号,\\
表示 \
。如果字符串两边用了双引号,内部的单引号不需要转义,反之亦然。
print('it's good') # 错误, python 会把 'it' 理解为一个字符串
print("it's good") # 正确
print('it\'s good') # 正确
如果不想使用转义符,可以在第一个单引号或双引号前面加 r
或 R
。例如 r'a\nb'
中的 \n
不代表换行而是 \
和 n
两个字符。
"一些字符 {0}, 一些字符 {1}".format(变量0, 变量1)
可以把字符串中的 {数字}
替换为对应的变量。
a = 123; b = 1.3e-14; f"blablabla {a}, {b}"
可以直接把变量展开到字符串中。
"a = %d\n , b = %s\n" % (a, b)
ord('a')
把字符转换为整数(utf 编码),chr(97)
把整数转换为字符。
字符串的截取与数组的截取相同
s = '0123456789'
print(s[0:3]) # 截取第一位到第三位的字符
print(s[:]) # 截取字符串的全部字符
print(s[6:]) # 截取第七个字符到结尾
print(s[:-3]) # 截取从头开始到倒数第三个字符之前
print(s[2]) # 截取第三个字符
print(s[-1]) # 截取倒数第一个字符
print(s[::-1]) # 创造一个与原字符串顺序相反的字符串
print(s[-3:-1]) # 截取倒数第三位与倒数第一位之前的字符
print(s[-3:]) # 截取倒数第三位到结尾
输出:
012
0123456789
6789
0123456
2
9
9876543210
78
789
delimiter = ','
mylist = ['Brazil', 'Russia', 'India', 'China']
print (delimiter.join(mylist))
print('abc'+'def')
输出
Brazil,Russia,India,China
abcdef
s.find('t')
,搜不到返回 -1
s.find('t', start)
s.find('t', start, end)
s.find('t')
s.count('t')
s='python String function'
print('%s find nono=%d' % (s,s.find('nono')))
print('%s find t=%d' % (s,s.find('t')))
print('%s find t from %d=%d' % (s,1,s.find('t',1)))
print('%s find t from %d to %d=%d' % (s,1,2,s.find('t',1,2)))
print('%s rfind t=%d' % (s,s.rfind('t')))
print('%s count t=%d' % (s,s.count('t')))
输出:
python String function find nono=-1
python String function find t=2
python String function find t from 1=2
python String function find t from 1 to 2=-1
python String function rfind t=18
python String function count t=3
替换 old 为 new:s.replace('old','new')
替换指定次数的 old 为 new:s.replace('old','new',maxReplaceTimes)
s.upper()
s.lower()
s.swapcase()
s.capitalize()
s.title()
s = 'python String 字符串'
print('s = ', s);
print('lower = ', s.lower()); # 全部变为小写:
print('upper = ', s.upper()); # 全部变为大写:
print('swapcase = ', s.swapcase()); # 大小写互换
print('capitalize = ', s.capitalize()); # 首字母大写,其余小写
print('title = ', s.title()); # 首字母大写
输出:
s = python String 字符串
lower = python string 字符串
upper = PYTHON STRING 字符串
swapcase = PYTHON sTRING 字符串
capitalize = Python string 字符串
title = Python String 字符串
获取固定长度,右对齐,左边不够用空格补齐:s.ljust(width)
获取固定长度,左对齐,右边不够用空格补齐:s.ljust(width)
获取固定长度,中间对齐,两边不够用空格补齐:s.ljust(width)
获取固定长度,右对齐,左边不足用 0 补齐
s='python String'
print('%s ljust = %s' % (s,s.ljust(20)))
print('%s rjust = %s' % (s,s.rjust(20)))
print('%s center = %s' % (s,s.center(20)))
print('%s zfill = %s' % (s,s.zfill(20)))
输出:
python String ljust = python String
python String rjust = python String
python String center = python String
python String zfill = 0000000python String
去两边空格:s.strip()
去左空格:s.lstrip()
去右空格:s.rstrip()
去两边字符串:s.strip('d')
,相应的也有 lstrip,rstrip
按指定字符分割字符串为数组:s.split(' ')
s = ' python String function '
print('%s strip=%s' % (s,s.strip()))
s = 'python String function'
print('%s strip=%s' % (s,s.strip('d')))
sStr1 = 'abcdefg'
sStr1 = sStr1[::-1]
print(sStr1)
输出
gfedcba
关于更多高效的字符串处理方法,感兴趣的读者可以查阅正则表达式的使用方法。
另见 string 模块。