Python数据类型-字符串

1、字符串:

字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。

如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识,比如:

'I\'m \"OK\"!'         # 表示的字符串内容是:I'm "OK"!


转义字符\可以转义很多字符,比如:

\n:表示换行
\t:表示制表符


字符\本身也要转义,所以\\表示的字符就是\,可以在Python的交互式命令行用print()打印字符串看看:

>>> print('I\'m ok.') 

I'm ok. 

>>> print('I\'m learning\nPython.') 

I'm learning 

Python. 

>>> print('\\\n\\') 

\ 

\

如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义:

>>> print('\\\t\\') 

\       \

>>> print(r'\\\t\\') 

\\\t\\

如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容,可以自己试试:

>>> print('''line1 ... line2 ... line3''')
line1 ... line2 ... line3
>>> print('''line1
... line2
... line3
... ''')
line1
line2
line3

注意在交互式命令行输入多行内容时,提示符由>>>变为...,提示你可以接着上一行输入。如果写成程序,就是:

print('''

line1 

line2 

line3''')


字符串的其他用法:

字符串乘法:
print(10*'a')  # 打印 10 个 a


例子1:

space = ' ' 

print("读万卷书,不如行万里路") 

print(space*2+"行万里路,不如阅人无数") 

print(space*4+"阅人无数,不如名师指路")

'''
读万卷书,不如行万里路
  行万里路,不如阅人无数
    阅人无数,不如名师指路
'''

例子2:

s = 'ilovepython'
print(s[1:5])   # love,字符串切片,顾头不顾尾,头:s[1]=l,尾巴:s[5]=p,不会打印 s[5]的值



2、格式化:

# 法1:
web = ("name:{names},address:{url}".format(names="123", url="www.123.com"))
 print(web)

# 法2:
web = '''
 name:{names}
 address:{url}'''.format(names="123", url="www.123.com")
 print(web)

# 法3:个人喜欢这种
web = '''
 name:%s
 address:%s
 ''' % ('123', 'www.123.com')
 print(web)

# 法4:
web = '''
 name:{0}
 address:{1}
 ''' .format('123', 'www.123.com')
 print(web)

'''

name:123,address:www.123.com


name:123
address:www.123.com


name:123
address:www.123.com


name:123
address:www.123.com

'''


3、索引:

s = 'hello kitty %s is %d' % ('hjc', 18)

print(s[0])  # h

print(s[1])  # e

print(s[2])  # l

print(s[3])  # l

print(len(s))  # 21,获取字符串长度

4、切片:

s = 'hello kitty hjc is 18'

print(s[0::2])  # hloktyhci 8,步长跳着切,每隔2个
print(s[:2])    # he,获取前两个字符,等价 s[0:2]
print(s[2:])    # llo kitty hjc is 18

5、常用方法:

st = 'hello kitty {name} is {age}'

a = '123'

b = 'abc'

c = '444'

d = '---'.join([a, b, c])   # 列表转字符串,然后用 ----,拼接起来,列表里面是需要拼接起来的内容,必须是字符串,用什么拼接
print(d)
# 123---abc---444

print(st.count('l'))        # 统计元素个数 格式:str.count('a',#,#) # 表示范围
# 2

print(st.center(50, '-'))   # 字符串居中,整体字符串长度为50,两边用 ‘-’ 填充
# -----------hello kitty {name} is {age}------------

print(st.startswith('he'))  # 判断字符串是否为整个字符串的开头
# True

print(st.endswith('tty3'))  # 判断字符串是否为整个字符串的结尾
# False

print('126.999'.isdigit())  # 判断是否为整数
# False

print(st.find('t'))         # 检测括号内 str 是否包含在 string 中,并将索引值返回,不存在则返回 -1,有范围 #,#
# 3

print(st.format(name='alex', age='53'))  # 格式化输出,传递参数
# hello kitty alex is 53

print('my Title. ?'.lower())  # 把字符串内的大写变小写
# my title. ?

print('my Title. ?'.upper())  # 把字符串内的小写变大写
# MY TITLE. ?

# 从左开始以什么作为分隔符,并把分割的内容以列表形式展现,# 为匹配多少个分隔符
print('my title title'.split(' ', 1))
# ['my', 'title title']

# 从左到右替换字符串中的源内容为目标,#:如果字符串中有多个匹配源,#为匹配多少个,默认不加#为全部替换
print('\tmy tiLtle title'.replace('tiLtle', 'le', 1))
#         my le title

# 把字符串的两边的空格和换行符去掉,做判断的时候要加,不然会匹配 str\n,可以加内容,指定去除内容 strip("*"):把 * 去掉
print('\n my \nTitle. ? '.strip())
# my
# Title. ?



6、不常用方法:

st = 'hello kitty {name} is {age}'
st2 = 'hjc'
a = '123'
b = 'abc'
c = '444'
print(st.index(st2))  # 检测子字符串在父字符串的索引位置 格式:父字符串.index(子字符串)

# 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。 格式:istring.expandtabs(tabsize=8)
print(st.expandtabs())

print(st.capitalize())  # 首写字母大写

print(st.format_map({'name': 'alex', 'age': '53'}))  # 以字典形式传递参数

print(st.index('t'))  # 存在在返回索引值,不存在则直接返回错误,建议用 find

print(st.isalnum())  # 判断字符串是否为纯字母和纯数字,不能包含空格和特殊字符

print('12345678'.isdecimal())  # 判断字符串是否为正整数

print('126.999'.isnumeric())  # 判断是否为整数,跟 isdigit 相同,识别的比较全,一,壹,都能识别

print('Abc'.isidentifier())  # 判断是否为纯字母,不能包含除字母外的内容

print(a.isalnum())  # 检测是否为纯字母和纯数字

print(a.isalpha())  # 检测是否为纯字母

print(a.isdigit())  # 检测是否为纯数字

print('bAc'.islower())  # 判断是否为纯小写字母

print('ABa'.isupper())  # 判断是否为纯大写字母

print(' e'.isspace())  # 判断是否为纯空格

print('Yy title'.istitle())  # 检测每串字符串的首个字母是否为大写 例:The,School:真;The,school:假

print("hello\n wo\nrld".splitlines())  # 按 \n 分割

print('my Title. ?'.swapcase())  # 把字符串内的小写变大写,大写变小写

print('my Title. ?'.ljust(50, '*'))  # 跟 center 相似,字符串居左,填充内容在右边

print('my Title. ?'.rjust(50, '*'))  # 跟 center 相似,字符串居右,填充内容在左边

print('\n my \nTitle. ? '.lstrip())  # 把字符串的左边的空格和换行符去掉

print('\n my \nTitle. ? '.rstrip())  # 把字符串的右边的空格和换行符去掉

print('my title title'.rfind('c'))  # 从右往左找字符串,找到并打印索引值,否则返回 -1

print('my title title'.rsplit('i', 1))  # 从右开始,跟上面一样,后面数字是分割几次

print('my title title'.title())  # 把每个单词的首写字母变成大写

print('str1' in 'hello')  # 判断 str1 是否在 hello 内,是:返回 true,否,返回 false

print(a.partition("中间部分"))  # 把一字符串分为,前中后三个部分,并把结果输出为元组形式,括号内输入的是中间的部分

print("hello world".zfill(50))  # 一共占50个字符,不够的 0,来补

b = repr("he is happy \n yes")  # 把 \n 转换成字符串,方便机器阅读成字符串,人读 \n 是换行

print(b)
posted @ 2018-04-26 17:53  H-JIACHENG  阅读(331)  评论(0编辑  收藏  举报