python-数据类型-字符串

定义字符串:

天天都说字符串,以下是一个简单的字符串

a = 'aaaaa'
b = "bbbbbb"
# 这俩都是 就是 单引号 和 双引号的区别
# 组合用法
str4_ = "We all know that 'A' and 'B' are two capital letters."

# 如果字符串中有双引号,为了避免使用转义符,你可以使用单引号来定义这个字符串
str5 = 'The teacher said: "Practice makes perfect" is a very famous proverb.'

字符串格式化的两种方式

%,关于整数的输出

  • %o:oct 八进制

  • %d:dec 十进制

  • %x:hex 十六进制

print("整数:%d,%d,%d" % (1, 22.22, 33))
print("整数不足5位,左边补空格   %5d   " % 22)
print("整数不足5位,左边补0     %05d   " % 22)
print("整数不足5位,右边补空格  %-5d   " % 22, "end")
print("八进制 %o" % 222)
print("十六进制 %x" % 12)

整数:1,22,33
整数不足5位,左边补空格      22   
整数不足5位,左边补0     00022   
整数不足5位,右边补空格  22       end
八进制 336
十六进制 c
包含知识点
  • 当你有多个参数需要格式化输出的时候,需要用元组 (1,2,3) ;注意不能用列表因为列表是可变的

  • 若传入的是浮点数如 22.55 ,最后输出的是22,不会四舍五入哦

  • 若传入了字符串 '22' ,是会报错滴!

%,关于浮点数的输出

print("浮点数:%f,%f " % (1, 22.22))
print("浮点数保留两位小数:%.2f  " % 22.222)
print("浮点数保留两位小数,宽5位,不足补0:%05.5f  " % 2.222)

浮点数:1.000000,22.220000 
浮点数保留两位小数:22.22  
浮点数保留两位小数,宽5位,不足补0:02.22 
包含知识点
  • 默认保留6位小数,可通过 .2f 这种形式指定小数位,2代表保留两位

%,关于字符串的输出

print("字符串:%s,%s,%s" % (1, 22.22, [1, 2]))
print("字符串不足5位,左边补空格   %5s   " % '2')
print("字符串不足5位,右边补空格   %-5s   " % '2', "end")
print("字符串宽10位,截取两位      %10.2s " % "hello.world")

字符串:1,22.22,[1, 2]
字符串不足5位,左边补空格       2   
字符串不足5位,右边补空格   2        end
字符串宽10位,截取两位              he 
包含知识点
  • 可以传入任意类型的数据,譬如整数、浮点数、列表、元组甚至字典,他都会自动转成字符串类型

format格式化输出

相对基本格式化输出采用 % 的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号 {} 作为特殊字符代替 %

format,位置匹配(最常用)

  • 不带编号,即“{}”

  • 带数字编号,可调换顺序,即“{1}”、“{2}”

  • 带关键字,即“{a}”、“{tom}”

print("今天是{}的{}生日会".format("帅哥", 18))
print("今天是{1}的{0}生日会".format("帅哥", 18))
print("今天是{0}的{1}生日会".format("帅哥", 18))
print("今天是{name}的{key}生日会".format(22, 11, name="帅哥", key=18))
print("今天是{name}的{key}生日会,接着上{}".format("test", name="帅哥", key=18))
# 以下会报错print("今天是{0}的{}生日会".format("帅哥", 18))
print("今天是{name}的{key}生日会,接着上{}".format( name="帅哥", key=18,"test"))

今天是帅哥的18生日会
今天是18的帅哥生日会
今天是帅哥的18生日会
今天是帅哥的18生日会今天是帅哥的19生日会,接着上test
包含知识点
  • 当你只写了 {} 时,默认按传入的值的顺序读取

  • 当你写了数字编号 {1} ,则可以读取对应位置上的值,从0开始

  • 当你指定了关键字 {name} ,如果不指定 name=xxx ,则会报错

  • 当你指定了关键字,又只写了 {} 时,你传入带有关键字指定的值必须写在后面,类似函数(形参在前,实参在后)

  • {} 和 {1} 是不能共存的

总结

当用到format时,一个字符串里面的格式化输出只用一种方式,不要混合使用,容易出问题且没有必要

format,指定数据类型输出

print("整数{:d}".format(123))
print("浮点数{:5.2f}".format(123.19))
print("字符串{:s}".format('123'))
print("八进制{:o}".format(12))
print("十六进制{:x}".format(13))

整数         123
浮点数       123.19
字符串       123
八进制       14
十六进制      d
包含知识点
  • 指定了 :s ,则只能传字符串值,如果传其他类型值不会自动转换

  • 当你不指定类型时,你传任何类型都能成功,如无特殊必要,可以不用指定类型

  • 如果要结合数字编号和关键字使用可以如下

print("关键字 {num:d}".format(num=123))
print("数字编号 {0:d},{1:s}".format(123, "123"))

关键字 123
数字编号 123,123

format,位数补齐

print('默认左对齐,宽度为10,不足补空格:{:10}'.format("123"), "end")
print('左对齐,宽度为10,不足补空格:{:<10}'.format("123"), "end")
print('右对齐,宽度为10,不足补空格:{}{:>10}'.format("start", "123"))
print('右对齐,宽度为10,取两位小数,不足补0:{:0>10.2f}'.format(22.22555))

默认左对齐,宽度为10,不足补空格:       123end
左对齐,宽度为10,不足补空格:123end
右对齐,宽度为10,不足补空格:start123
右对齐,宽度为10,取两位小数,不足补0:0000022.23
包含知识点
  • 默认左对齐可以不用就加 <

  • 当你不指定数据类型时,传什么类型的值都能成功格式化输出

format,拓展使用

print("总是显示符号:{:0>+8.2f},{:0>+8.2f}".format(3.14, -3.14))
print("百分数:{:%} {:.2%}".format(3 / 7, 3 / 7))
print("逗号分隔,一般用在金钱 {:,}".format(12345678)

总是显示符号:000+3.14,000-3.14
百分数:42.857143% 42.86%
逗号分隔,一般用在金钱 12,345,678
包含知识点
  • + 的意义在于,当我们输出的是正数也能看到符号

  • 百分数是真的百分数,不是单单加个 % ;譬如0.25667,变成百分数就是 25.67%

  • , 固定隔三位数字;传入字符串会报错哦

字符串的转义符【以下是常用的】

转义字符

说明

\n

换行符,将光标位置移到下一行开头。

\r

回车符,将光标位置移到本行开头。

\t

水平制表符,也即 Tab 键,一般相当于四个空格。

\a

蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效。

\b

退格(Backspace),将光标位置移到前一列。

\\

反斜线

\'

单引号

\"

双引号

\

在字符串行尾的续行符,即一行未完,转到下一行继续写。

#使用\t排版
str1 = '网站\t\t域名\t\t\t年龄\t\t价值'
str2 = 'C语言中文网\tc.biancheng.net\t\t8\t\t500W'
str3 = '百度\t\twww.baidu.com\t\t20\t\t500000W'
print(str1)
print(str2)
print(str3)
print("--------------------")
# \n在输出时换行,\在书写字符串时换行
info = "Python教程:http://c.biancheng.net/python/\n\
C++教程:http://c.biancheng.net/cplus/\n\
Linux教程:http://c.biancheng.net/linux_tutorial/"
print(info)


网站        域名                年龄    价值
C语言中文网 c.biancheng.net     8       500W
百度        www.baidu.com       20      500000W
--------------------
Python教程:http://c.biancheng.net/python/
C++教程:http://c.biancheng.net/cplus/
Linux教程:http://c.biancheng.net/linux_tutorial/

字符串运算符

+

字符串连接

>>>a + b'HelloPython'

*

重复输出字符串

>>>a * 2'HelloHello'

[]

通过索引获取字符串中字符

>>>a[1]'e'

[ : ]

截取字符串中的一部分

>>>a[1:4]'ell'

in

成员运算符 - 如果字符串中包含给定的字符返回 True

>>>"H" in aTrue

not in

成员运算符 - 如果字符串中不包含给定的字符返回 True

>>>"M" not in aTrue

r/R

原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。

>>>print r'\n'\n>>> print R'\n'\n

字符串内建函数

string.capitalize() :

把字符串的第一个字符大写

>>>s = 'a, B'
>>> s.capitalize()
'A, b'
 
>>> s = ' a, B'    # a 前面有空格
>>> s.capitalize()
' a, b'
 
>>> s = 'a, BCD'
>>> s.capitalize()
'A, bcd'

str.upper() :

转换 string 中的小写字母为大写

str = "this is string example....wow!!!";
print "str.upper() : ", str.upper()

str.upper() :  THIS IS STRING EXAMPLE....WOW!!!

str.count(sub, start= 0,end=len(string)):

方法用于统计字符串里某个字符或子字符串出现的次数。可选参数为在字符串搜索的开始与结束位置。

sub -- 搜索的子字符串
start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

该方法返回子字符串在字符串中出现的次数。
#!/usr/bin/python
 
str = "this is string example....wow!!!";
 
sub = "i";
print "str.count(sub, 4, 40) : ", str.count(sub, 4, 40)
sub = "wow";
print "str.count(sub) : ", str.count(sub)
以上实例输出结果如下:

str.count(sub, 4, 40) :  2
str.count(sub) :  1

string.title():

返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())

str = "this is string example....wow!!!";
print str.title();
以上实例输出结果如下:

This Is String Example....Wow!!!

string.strip([obj]) :

用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

str = "00000003210Runoob01230000000"; 
print str.strip( '0' );  # 去除首尾字符 0
 

str2 = "   Runoob      ";   # 去除首尾空格
print str2.strip();


3210Runoob0123
Runoob

string.lstrip():

用于截掉字符串左边的空格或指定字符。

#!/usr/bin/python

str = "     this is string example....wow!!!     ";
print str.lstrip();
str = "88888888this is string example....wow!!!8888888";
print str.lstrip('8');
以上实例输出结果如下:

this is string example....wow!!!
this is string example....wow!!!8888888

string.rstrip():

删除 string 字符串末尾的指定字符,默认为空白符,包括空格、换行符、回车符、制表符。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

random_string = 'this is good    '

# 字符串末尾的空格会被删除
print(random_string.rstrip())

# 'si oo' 不是尾随字符,因此不会删除任何内容
print(random_string.rstrip('si oo'))

# 在 'sid oo' 中 'd oo' 是尾随字符,'ood' 从字符串中删除
print(random_string.rstrip('sid oo'))

# 'm/' 是尾随字符,没有找到 '.' 号的尾随字符, 'm/' 从字符串中删除
website = 'www.runoob.com/'
print(website.rstrip('m/.'))

# 移除逗号(,)、点号(.)、字母 s、q 或 w,这几个都是尾随字符
txt = "banana,,,,,ssqqqww....."
x = txt.rstrip(",.qsw")
print(x)
# 删除尾随字符 *
str = "*****this is string example....wow!!!*****"
print (str.rstrip('*'))
print(x)

以上实例输出结果如下:

this is good
this is good
this is g
www.runoob.co
banana
*****this is string example....wow!!!

string.replace(old, new[, max]):

方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

  • old -- 将被替换的子字符串。

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

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

#!/usr/bin/python
 
str = "this is string example....wow!!! this is really string";
print str.replace("is", "was");
print str.replace("is", "was", 3);
以上实例输出结果如下:

thwas was string example....wow!!! thwas was really string
thwas was string example....wow!!! thwas is really string

string.index(str, beg=0, end=len(string)):

跟find()方法一样,只不过如果str不在 string中会报一个异常.

方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。

#!/usr/bin/python
 
str1 = "this is string example....wow!!!"
str2 = "exam"
 
print str1.index(str2)
print str1.index(str2, 10)
print str1.index(str2, 40)
以上实例输出结果如下:

15
15
Traceback (most recent call last):
  File "test.py", line 8, in 
  print str1.index(str2, 40);
ValueError: substring not found

shell returned 1

string.find(str, beg=0, end=len(string)):

检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,

如果是返回开始的索引值,否则返回-1

>>>info = 'abca'
>>> print info.find('a')    # 从下标0开始,查找在字符串里第一个出现的子串,返回结果:0
0
>>> print info.find('a',1)  # 从下标1开始,查找在字符串里第一个出现的子串:返回结果3
3
>>> print info.find('3')    # 查找不到返回-1
-1

string.split(str="", num=string.count(str)):

以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符串

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
txt = "Google#Runoob#Taobao#Facebook"
 
# 第二个参数为 1,返回两个参数列表
x = txt.split("#", 1)
 
print x
以上实例输出结果如下:

['Google', 'Runoob#Taobao#Facebook']

string.center(width):

  • width -- 字符串的总宽度。

  • fillchar -- 填充字符。

该方法返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。

>>>str = 'runoob'
>>> str.center(20, '*')
'*******runoob*******'
>>> str.center(20)
'       runoob       '
>>>

string.islower():

如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False

#!/usr/bin/python

str = "THIS is string example....wow!!!"; 
print str.islower();

str = "this is string example....wow!!!";
print str.islower();
以上实例输出结果如下:

False
True

string.join(seq):

以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

symbol = "-";
seq = ("a", "b", "c"); # 字符串序列
print symbol.join( seq );

a-b-c

string.lower():

转换 string 中所有大写字符为小写.

#!/usr/bin/python

str = "THIS IS STRING EXAMPLE....WOW!!!";

print str.lower();
以上实例输出结果如下:

this is string example....wow!!!

max(str):

返回字符串 str 中最大的字母。

str = "this is really a string example....wow!!!";
print "Max character: " + max(str);

str = "this is a string example....wow!!!";
print "Max character: " + max(str);

Max character: y
Max character: x

min(str):

返回字符串 str 中最小的字母。

#!/usr/bin/python

str = "this-is-real-string-example....wow!!!";
print "Min character: " + min(str);

str = "this-is-a-string-example....wow!!!";
print "Min character: " + min(str);

Min character: !
Min character: !

string.startswith(obj, beg=0,end=len(string)):

  • str -- 检测的字符串。

  • strbeg -- 可选参数用于设置字符串检测的起始位置。

  • strend -- 可选参数用于设置字符串检测的结束位置。

#!/usr/bin/python

str = "this is string example....wow!!!";
print str.startswith( 'this' );
print str.startswith( 'is', 2, 4 );
print str.startswith( 'this', 2, 4 );

True
True
False

string.decode(encoding='UTF-8', errors='strict'):

以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace'

#!/usr/bin/python
 
str = "this is string example....wow!!!";
str = str.encode('base64','strict');
 
print "Encoded String: " + str;
print "Decoded String: " + str.decode('base64','strict')


Encoded String: dGhpcyBpcyBzdHJpbmcgZXhhbXBsZS4uLi53b3chISE=
Decoded String: this is string example....wow!!!

string.encode(encoding='UTF-8', errors='strict'):

以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'

#!/usr/bin/python

str = "this is string example....wow!!!";

print "Encoded String: " + str.encode('base64','strict')

Encoded String: dGhpcyBpcyBzdHJpbmcgZXhhbXBsZS4uLi53b3chISE=

字符串切片:

字符串 [开始索引:结束索引:步长]

切取字符串为开始索引到结束索引-1内的字符串

步长不指定时步长为1 字符串 [开始索引:结束索引]

num_str = '1234567899'

# 1.截取2 - 5位置的字符
num_str_1 = num_str[1:7]

234567

# 2.截取2 - 末尾的字符
# 当开始索引和结束索引为开始和结束时可以省略不写
num_str_1 = num_str[2:]
print(num_str_1)

34567899

# 3.截取从开始 -5 位置的字符串
num_str_1 = num_str[0:6]
print(num_str_1)

123456

# 4.截取完整的字符串
num_str_1 = num_str[:]
print(num_str_1)

1234567899

# 5.从开始位置,每隔一个字符截取字符串
num_str_1 = num_str[::2]
print(num_str_1)

13579

# 6.从索引1开始,每隔一个取一个
num_str_1 = num_str[1::2]
print(num_str_1)

24689

# 7.截取2 - 末尾-1 的字符串
num_str_1 = num_str[2:-1]
print(num_str_1)

3456789

# 8.截取字符串末尾两个字符
num_str_1 = num_str[-2:]
print(num_str_1)

99

# 9.字符串的逆序
num_str_1 = num_str[::-1]
print(num_str_1)
num_str_1 = num_str[-1::-1]
print(num_str_1)
# 那么我们试试用负数的索引可以取到字符串的什么值
print(num_str[-1])

9987654321
9987654321
9

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值