首页 > 其他 > 详细

字符串

时间:2020-05-06 12:51:59      阅读:64      评论:0      收藏:0      [点我收藏+]

在python中字符串是使用单引号,双引号,三引号包裹起来的字符的序列,用来表示文本信息。

1.字符串的定义

a = ‘a‘
b = "bc"
c = """hello,world"""
d = ‘‘‘hello,d‘‘‘
e = """
    hello,
    world!
    """
print(‘a的类型为:‘, type(a))    # a的类型为: <class ‘str‘>
print(‘b的类型为:‘, type(b))    # b的类型为: <class ‘str‘>
print(‘c的类型为:‘, type(c))    # c的类型为: <class ‘str‘>
print(‘d的类型为:‘, type(d))    # d的类型为: <class ‘str‘>
print(‘e的类型为:‘, type(e))    # e的类型为: <class ‘str‘>

使用单引号和双引号进行字符串定义没有任何区别,当要表示字符串的单引号时用双引号进行定义字符串,反之亦然。

一对单引号或双引号只能创建单行字符串,三引号可以创建多行表示的字符串。三双引号一般用来做多行注释,表示函数,类定义时的说明。

python中str表示字符串类型。

定义空字符串

a = ""
b = ‘‘

注释

为了使代码便于阅读和维护,需要在代码中加入注释。python中的注释分为单行注释和多行注释。

在一行开头,或是在语句结尾使用井号#进行单行注释,例如:

# 我是行注释
age = 18  # 年龄(我也是注释)

注意:按照规范如果紧跟代码注释需要两个空格后再注释。井号后面空一个空格后再写注释内容

多行注释使用三单引号或三双引号进行注释都可以,但一般使用三双引号

def my_abs(arg):
    """
    返回arg的绝对值
    arg:数值类型
    """
    pass

2.字符串的索引

任何序列类型中的元素都有索引用来表示它在序列中的位置。

字符串是字符的序列表示,单个字符在字符串中的位置使用索引来表示,也叫下标。

索引使用整数来表示。

技术分享图片

通过索引可以获取字符串中的单个字符

语法如下:

str[index]
>>> s = ‘hello‘
>>> print(s[0])
>>> ‘h‘
>>> print(s[-1])
>>> ‘o‘

注意python中序列的索引从0开始。

3.字符串的切片

获取序列中的子序列叫切片。

字符串的切片就是获取字符串的子串。

字符串切片的语法如下:

str[start:end:step]

start表示起始索引,end表示结束索引,step表示步长。

str[m:n:t]表示从字符串索引为mn之间不包含n每隔t个字符进行切片。

step为1的时候可以省略。

特别的,当step为负数时,表示反向切片。

>>> s = ‘0123456789‘
>>> print(s[1:5])  # 包头不包尾
>>> ‘1234‘
>>> print(s[:5])  # 从头开始切可以省略start
>>> ‘01234‘
>>> print(s[1:])  # 切到末尾省略end
>>> ‘123456789‘
>>> print(s[1::2]) # 步长为2进行切片
>>> ‘13579‘
>>> print(s[1::-2]) # 不长为负数反向切片
>>> ‘1‘
思考

获取一个字符串的逆串,例如‘abc‘的逆串是‘cba‘

4.字符串拼接

python中可以通过+拼接两个字符串

>>> a = ‘hello‘
>>> b = ‘ ‘
>>> c = ‘world!‘
>>> print(a+b+c)
>>> ‘hello world!‘

字符串和整数进行乘法运算表示重复拼接这个字符串

>>> print(‘*‘ * 10)
>>> ‘**********‘

5.字符串常用方法

通过内建函数dir可以返回传入其中的对象的所有方法名列表。

>>> dir(‘字符串‘)
[‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__getnewargs__‘, ‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__init_subclass__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mod__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__rmod__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘capitalize‘, ‘casefold‘, ‘center‘, ‘count‘, ‘encode‘, ‘endswith‘, ‘expandtabs‘, ‘find‘, ‘format‘, ‘format_map‘, ‘index‘, ‘isalnum‘, ‘isalpha‘, ‘isascii‘, ‘isdecimal‘, ‘isdigit‘, ‘isidentifier‘, ‘islower‘, ‘isnumeric‘, ‘isprintable‘, ‘isspace‘, ‘istitle‘, ‘isupper‘, ‘join‘, ‘ljust‘, ‘lower‘, ‘lstrip‘, ‘maketrans‘, ‘partition‘, ‘replace‘, ‘rfind‘, ‘rindex‘, ‘rjust‘, ‘rpartition‘, ‘rsplit‘, ‘rstrip‘, ‘split‘, ‘splitlines‘, ‘startswith‘, ‘strip‘, ‘swapcase‘, ‘title‘, ‘translate‘, ‘upper‘, ‘zfill‘]

上面输出的不带下划线的都是字符串的可调用方法,字符串使用句点法调用方法。

例如:

‘abc‘.upper()  # 返回字符串的全大写形式。

通过内建函数help可以返回传入函数的帮助信息,注意方法名后不要加小括号。

>>> help(‘字符串‘.replace)

6. 字符串和数值的相互转化

1 和 ‘1‘不同,1.2和‘1.2‘也不相同,但是它们可以相互转化

# 整数和字符串之间的转化
>>> int(‘1‘)
>>> 1
>>> str(1)
>>> ‘1‘
# 浮点数和字符串之间的转化
>>> float(‘1.2‘)
>>> 1.2
>>> str(1.2)
>>> ‘1.2‘
# 尝试 int(‘1.2‘)看看结果会是什么

7.转义符

当需要在字符串中使用特殊字符时,python用反斜杠\转义字符来进行转义。常用转义字符如下表:

(在行尾时) 续行符
\\ 反斜杠符号
\‘ 单引号
\" 双引号
\a 响铃
\n 换行
\t 横向制表符
\r 回车
\f 换页
print(‘窗前明月光,\n疑是地上霜。‘)  # 输出换行
print(‘对\\错‘)   # 输出反斜杠本身
print(‘\‘‘)      # 输出单引号本身

在字符串前面加上r表示不转义原样输出

print(r‘窗前明月光,\n疑是地上霜。‘)  # \n会原样输出不转义

8.字符串格式化

在实际工作中经常需要动态输出字符。

例如,我们通过程序计算计算机的内存利用率,然后输出

10:15 计算机的内存利用率为30%

其中下划线内容会动态调整,需要根据程序执行结果进行填充,最终形成上述格式的字符串输出。

python支持两种形式的字符串格式化

% 字符串格式化

语法格式如下:

%[(name)][flags][width][.precision]typecode
  • (name) 可选,用于选择指定的key

  • flags 可选,可供选择的值有,注意只有在和数值类型的typecode配合才起作用

    • +, 右对齐,正数前加正号,负数前加负号
    • -, 左对齐,正数前无符号,负数前加负号
    • 空格, 右对齐,正数前加空格,负数前加负号
    • 0, 右对齐,正数前无符号,复数前加负号;用0填充空白处
  • width,可选字符串输出宽度

  • .precision 可选,小数点后保留位数,注意只有在和数值类型的typecode配合才起作用

  • typecode必选

    • s,获取传入对象的字符串形式,并将其格式化到指定位置
    • r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
    • c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
    • o,将整数转换成 八 进制表示,并将其格式化到指定位置
    • x,将整数转换成十六进制表示,并将其格式化到指定位置
    • d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
    • e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
    • E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
    • f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
    • F,同上
    • g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)`
    • G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)`
    • %,当字符串中存在格式化标志时,需要用 %%表示一个百分号
res = ‘%s计算机的内存利用率为%s%%‘ % (‘11:15‘, 75)
# ‘%s‘作为槽位和 % 号后提供的值一一对应
res = ‘%(time)s计算机的内存利用率为%(percent)s%%‘ % {‘time‘:‘11:15‘, ‘percent‘: 75}

# 输出两位数的月份,例如01,02
res = ‘%02d‘ % 8

# 保留2为小数
res = ‘%(time)s计算机的内存利用率为%(percent).2f%%‘ % {‘time‘:‘11:15‘, ‘percent‘: 75.123}
format函数格式化

%的字符串格式化继承自C语言,python中给字符串对象提供了一个format函数进行字符串格式化,且功能更强大,并且大力推荐,所以我们要首选使用。

基本语法是<模板字符串>.format(<逗号分隔的参数>)

在模板字符串中使用{}代替以前的%作为槽位

‘{}计算机的内存利用率为{}%‘.format(‘11:15‘, 75)

当format中的参数使用位置参数提供时,{}中可以填写参数的整数索引和参数一一对应

‘{0}计算机的内存利用率为{1}%‘.format(‘11:15‘, 75)

当format中的参数使用关键字参数提供时,{}中可以填写参数名和参数一一对应

‘{time}计算机的内存利用率为{percent}%‘.format(time=‘11:15‘, percent=75)

{}中除了可以写参数索引外,还可以填写控制信息来实现更多的格式化功能,语法如下

{<参数序号>:<格式控制标记>}
# 其中格式控制标记格式如下
[fill][align][sign][#][0][width][,][.precision][type]
  • fill 【可选】空白处填充的字符

  • align 【可选】对齐方式(需配合width使用)

    • <,内容左对齐
    • >,内容右对齐(默认)
    • =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
    • ^,内容居中
  • sign 【可选】有无符号数字

    • +,正号加正,负号加负;
    • -,正号不变,负号加负;
    • 空格 ,正号空格,负号加负;
  • # 【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示

  • , 【可选】为数字添加分隔符,如:1,000,000

  • width 【可选】格式化位所占宽度

  • .precision 【可选】小数位保留精度

  • type 【可选】格式化类型

    • 传入” 字符串类型 “的参数
      • s,格式化字符串类型数据
      • 空白,未指定类型,则默认是None,同s
    • 传入“ 整数类型 ”的参数
      • b,将10进制整数自动转换成2进制表示然后格式化
      • c,将10进制整数自动转换为其对应的unicode字符
      • d,十进制整数
      • o,将10进制整数自动转换成8进制表示然后格式化;
      • x,将10进制整数自动转换成16进制表示然后格式化(小写x)
      • X,将10进制整数自动转换成16进制表示然后格式化(大写X)
    • 传入“ 浮点型或小数类型 ”的参数
      • e, 转换为科学计数法(小写e)表示,然后格式化;
      • E, 转换为科学计数法(大写E)表示,然后格式化;
      • f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
      • F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
      • g, 自动在e和f中切换
      • G, 自动在E和F中切换
      • %,显示百分比(默认显示小数点后6位)
res = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
 
res = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)

# 输出两位数的月份,例如01,02
res = ‘{:0>2}‘.format(8) 

# 保留2为小数
res = ‘{time}计算机的内存利用率为{percent:.2%}‘.format(time=‘11:15‘, percent=0.75123)

字符串

原文:https://www.cnblogs.com/superwuchaofan/p/12835485.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!