ITPub博客

首页 > 应用开发 > Python > Python基本数据类型之字符串

Python基本数据类型之字符串

原创 Python 作者:Winter 时间:2019-01-29 17:27:28 0 删除 编辑

str(字符串)

1.字符串是 Python 中最常用的数据类型。我们可以使用 '' , "" , ''' ''' , """ """ 这四种方式来定义字符串;


a = 'x'
b = "y"
c = '''xxx'''
d = """yyy"""
print(a,b,c,d)   #输出:x y xxx yyy

2.字符串是不可变的,字符串一旦定义就不能改变;


string = 'world'
string = 'hello world'

3.字符串的转义;


\:续行符;
\e:转义;
\n:换行;
\ \:反斜杠符号;
\ ":单引号;
\ ":双引号;
\000:空;
\v:纵向制表符;
\t:横向制表符;
\r:回车;
\f:换页;
\oyy:八进制数,yy代表的字符,例如:\o12代表换行;
xyy:十六进制数,yy代表的字符,例如:\x0a代表换行;
\other:其它的字符以普通格式输出;

4.字符串可以通过索引和循环迭代两种方式来访问;


# 索引访问
str = 'hello'
print(str[1])  #输出:e
# 循环迭代访问
str1 = 'hello'
for item in str1:
    print(item)  #输出:h e l l o

5.字符串的连接方式

  • 使用 + 号直接连接;

string1 = 'hello'
string2 = '\t'
string3 = 'world'
print(string1 + string2 + string3)  #输出:hello    world

  • 使用join方法连接;

lst = ['1', '2', '3', '4', '5']
lst_new = ''.join(lst)
print(lst_new)    #输出:12345

6.字符串的切割

  • 使用 split(sep=None, maxsplit=num) -> list of strings , 从左向右切割,sep指定分隔符,maxsplit指定切割的次数, num指定切割多少次,如果不设置maxsplit参数,那就根据sep切割,不限定次数;

string1 = '1,2,3,4,5'
new_obj1 = string1.split(',')
new_obj2 = string1.split(',', maxsplit=1)
print(new_obj1)  #输出:['1', '2', '3', '4', '5']
print(new_obj2)  #输出:['1', '2,3,4,5']

  • 使用rsplit方法, rsplit(sep=None, maxsplit=num) -> list of strings,参数设置和split方法类似,不同之处在于, rsplit方法是从右向左切割的;

string1 = '1,2,3,4,5'
new_obj1 = string1.rsplit(',')
new_obj2 = string1.rsplit(',', maxsplit=1)
print(new_obj1)  #输出:['1', '2', '3', '4', '5']
print(new_obj2)  #输出:['1,2,3,4', '5']

  • 使用splitlines方法, splitlines([keepends]) -> list of strings, 换行符 ('\r', '\r\n', \n') 切割, keepends指是否保留分隔符,True为保留,False不保留;

string1 = 'I love xkd \nI love xkd'
new_obj1 = string1.splitlines()
new_obj2 = string1.splitlines(True)
print(new_obj1) #输出:['I love xkd ', 'I love xkd']
print(new_obj2) #输出:['I love xkd \n', 'I love xkd']

  • 使用partition方法, partition(sep) -> (head, sep, tail), 从左到右切割三段,中间那段为分隔符。如果只需要输出其中一段,可以把其它的段用 _ 下划线代替;

string1 = '1,2,3,4,5'
new_obj1, seq, new_obj2 = string1.partition(',')
print(new_obj1) #输出:1
print(seq)      #输出:,
print(new_obj2) #输出:2,3,4,5
new_obj1, _, _ = string1.partition(',')
print(new_obj1)  #输出:1

7.字符串对象方法


string = 'aBcd abcD'   #初始化一个字符串string

  • 全部转为大写;

print(string.upper())  #输出:ABCD ABCD

  • 全部转为小写;

print(string.lower())  #输出:abcd abcd

  • 大写改小写,小写改大写;

print(string.swapcase())   #输出:AbCD ABCd

  • 所有单词首字母大写;

print(string.title())     #输出:Abcd Abcd

  • 字符串首字母大写;

print(string.capitalize()) #输出:Abcd abcd

  • center方法,center(width[, fillchar]) -> str, 将字符串居中,width指定宽度, fillchar指定填充的字符;

print(string.center(100, '*'))
输出:**********aBcd abcD***********

  • ljust方法,ljust(width[, fillchar]), 将字符串居左,width指定宽度, fillchar指定填充的字符;

print(string.ljust(100, '*'))
输出:aBcd abcD********************

  • rjust方法,rjust(width[, fillchar]), 将字符串居右,width指定宽度, fillchar指定填充的字符;

print(string.rjust(100, '*'))
输出:********************aBcd abcD

  • zfill方法,zfill(width) -> str, 右对齐打印,左边使用0填充;

print(string.zfill(100))
输出:00000000000000000000aBcd abcD

8.字符串修改

  • replace方法,replace(old, new[, count]) -> str, 字符串替换,old指需要被替换的字符串,new为替换字符串, count为指定的次数;

string = 'age'
print(string.replace('a', 'z'))  #输出:zge

  • strip方法,strip([chars]) -> str, 剔除两端的字符,chars指定剔除的字符,chars不指定则为剔除空白字符;

string = ' age '
print(string.strip())  #输出:age
print(string.strip())  #输出:age

  • lstrip: 剔除左边的字符,rstrip: 剔除右边的字符;

print(string.rstrip())  #输出: age
print(string.lstrip())  #输出:age

9.字符串查找


string = 'helloworld'

  • find方法,find(sub[, start[, end]]) -> int, 从左向右查找,sub指定要查找的字符串,[start,end] 为开始和结束索引,返回索引;

print(string.find('e'))  #输出:1

  • index方法,index(sub[, start[, end]]) -> int,返回索引;

print(string.index('w')) #输出:5

  • count方法,count(sub[, start[, end]]) -> int, 返回字符出现的次数;

print(string.count('l')) #输出:3

10.字符串判断


string = 'hello'  #初始化一个字符串string

  • startswith方法,startswith(prefix[, start[, end]]) -> bool, 是否以prefix开头;

print(string.startswith(''))  #输出:True

  • endswith(suffix[, start[, end]]) -> bool, 是否以suffix结尾;

print(string.endswith('x'))  #输出:False

  • isalnum() 是否是字母或数字;

print(string.isalnum())  #输出:True

  • isalpha() 是否是字母;

print(string.isalpha())  #输出:True

  • isdigit() 是否是数字;

print(string.isdecimal())  #输出:False

  • isdecimal() 是否是十进制;

print(string.isdecimal())  #输出:False

  • isidentifier() 是否是字母和下划线开头;

print(string.isidentifier())  #输出:True

  • islower() 是否是小写;

print(string.islower())  #输出:True

  • isupper() 是否是大写;

print(string.isupper())  #输出:False

  • isspace() 是否是全空白字符;

print(string.isspace())  #输出:False

11.符串格式化

  • C语言风格

print("I am %04d" % (100,)) # 前端补0
print('I am %s' % 'hello')    # 字符串
print('%.3f' % (99.56789))  # 保留3位小数
print("I am %-5d" % (20,))  # 左对齐
print("I am %5d" % (20,))   # 右对齐

  • python format风格

S.format(*args, **kwargs) -> str, 其中args为元组,kwargs为字典,花括号为占位符
1: 占位
print('我是{}, 我在{}'.format('鱼儿', '海里'))
print('我是{0}, 我在{1}'.format('鱼儿', '海里'))
print('我是{1}, 我在{0}'.format('海里','鱼儿',))
print('我是{1}, 我在{0}'.format(*('海里','鱼儿')))
print('我是{name}, 我在{addr}'.format(name='鱼儿', addr='海里'))
print('我是{name}, 我在{addr}'.format(**{'name':'鱼儿', 'addr':'海里'}))
2:对齐
# 指定100个位置,且左对齐
print('{0} + {1} = {2:<100}'.format(1,2,3))
# 指定100个位置,且右对齐
print('{0} + {1} = {2:>100}'.format(1,2,3))
# 指定100个位置,且左对齐,其他地方补0
print('{0} + {1} = {2:0<100}'.format(1,2,3))
# 指定100个位置,且右对齐,其他地方补0
print('{0} + {1} = {2:0>100}'.format(1,2,3))
# 指定100个位置,居中对齐
print('{0} + {1} = {2:^100}'.format(1,2,3))
# 指定100个位置,居中对齐, 其他地方补0
print('{0} + {1} = {2:0^100}'.format(1,2,'不知道'))
# 进制
print("int: {0:d} bin: {0:b} hex: {0:x} oct: {0:o} ".format(100))
print("int: {0:d} bin: {0:#b} hex: {0:#x} oct: {0:#o} ".format(100))

参考:侠课岛( 9xkd.com )Python同学计划(侵删)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69908432/viewspace-2565181/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
努力学习,做最好的自己!

注册时间:2019-01-23

  • 博文量
    129
  • 访问量
    110552