ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python3.7之字符串

2020-01-16 16:06:04  阅读:248  来源: 互联网

标签:字符 join name format print Python3.7 字符串


Python3.7之字符串

一、基础知识

在python中,加了引号的字符均被认为是字符串。单双引号没有任何区别,但要考虑字符串内含有引号的配合情况,多行字符串必须用多引号。

二、字符串常用函数

1.合并字符串之join()与format()

join():用于将序列中的元素以指定的字符连接生成一个新的字符串。

l = ['a','a','a','a']
L1 = ''.join(l)   # output is 'aaaa'
L2 = 'b'.join(l)  # output is 'abababa'
L3 = '5'.join(l)  # output is 'a5a5a5a'

format():Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {}: 来代替以前的 % 。format 函数可以接受不限个参数,位置可以不按顺序。

# 形式一
print('{0}{1}{0}'.format('a', 'b'))
# 形式二,必须一一对应
print('{}{}'.format('a', 'b'))
# 形式三
print('{name}的年龄是{age}'.format(age=12, name='谢欣然'))
'''
aba
ab
谢欣然的年龄是12
'''

2. strip()与split()辨析

strip是删除的意思,而split则是分割的意思,两者功能不同。

strip():取掉字符两端字符(默认是空格,当然也可以以自定义字符放到括弧里),所以就有rstrip(),lstrip(),意思是去掉右边、去掉左边。

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

l = '222hello22222222'
l.strip('2')   # output is 'hello'
l.rstrip('2')  # output is 222hello
l.lstrip('2')  # output is hello2222222

只要头尾包含有指定字符序列中的字符就删除

str = "123abcrunoob321"
print (str.strip( '12' ))  # 字符序列为 12
'''
3abcrunoob3
'''

split():通过指定分隔符对字符串进行切片,分割成列表,如果参数 num 有指定值,则分隔 num+1 个子字符串。分隔符默认为空字符,包括空格,换行符,制表符,num默认为-1。

str = "Line1-abcdef \nLine2-abc \nLine4-abcd"
print(str.split())       # 以空格为分隔符,包含 \n
print(str.split(' ', 1))  # 以空格为分隔符,分隔成两个
'''
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
'''

3. find()与index()辨析

s.index(x):返回字符串s中出现x的最左端的索引值,如果不在则抛出ValueError异常(报错)

s.find(x) :返回字符串s中出现x的最左端字符的索引值,如果不在则返回-1

均为找到x即返回,不进行后面的二次判断。

s = 'Hello, how are you?'
print(s.find('o'))
print(s.index('o'))
print(s.find('i'))
'''
4
4
-1
'''
print(s.index('i'))
'''
ValueError: substring not found
'''

4.切片

格式: [starts: end: step]

• [:] 提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串
• [start:] 从start 提取到结尾
• [:end] 从开头提取到end - 1
• [start: end] 从start 提取到end - 1
• [start: end: step] 从start 提取到end - 1,每step 个字符提取一个
• 左侧第一个字符的位置/偏移量为0,右侧最后一个字符的位置/偏移量为-1

注意:字符串倒转

s = 'Hello, how are you?'
print(s[::-1])
'''
?uoy era woh ,olleH
'''

5.其他函数

capitalize(): 首字母变大写

center(width[, fillchar]): 原来字符居中,不够用字符串补全(默认字符)

count(sub[, start[, end]]): 从一个范围内统计某str出现的次数

s = 'hello, how are you?'
print(s.capitalize())
print(s.center(50, '*'))
print(s.count('o', 0, len(s)))

三、关于字符串拼接的方法总结

1.+

str1 = 'hello '
str2 = 'world'
print(str1+str2)

因为字符串为不可变数据类型,则拼接后的新字符串会独占一块新的内存。

拓展:在拼接短的字面值时,由于CPython中的 常数折叠 (constant folding)功能,这些字面值会被转换成更短的形式,例如'a'+'b'+'c' 被转换成'abc','hello'+'world'也会被转换成'hello world'。这种转换是在编译期完成的,而到了运行期时就不会再发生任何拼接操作,因此会加快整体计算的速度。

常数折叠优化有一个限度,它要求拼接结果的长度不超过20。所以,当拼接的最终字符串长度不超过20时,+号操作符的方式,会比后面提到的join等方式快得多,这与+号的使用次数无关。

2.(格式化字符串)%

print('%s %s' % ('hello', 'world'))

3.join()

用于将序列中的元素以指定的字符连接生成一个新的字符串。

l = ['a','a','a','a']
L1 = ''.join(l)   # output is 'aaaa'
L2 = 'b'.join(l)  # output is 'abababa'
L3 = '5'.join(l)  # output is 'a5a5a5a'

4.format()

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {}: 来代替以前的 % 。format 函数可以接受不限个参数,位置可以不按顺序。

# 形式一
print('{0}{1}{0}'.format('a', 'b'))
# 形式二,必须一一对应
print('{}{}'.format('a', 'b'))
# 形式三
print('{name}的年龄是{age}'.format(age=12, name='谢欣然'))
'''
aba
ab
谢欣然的年龄是12
'''

5.f-string

f-string方式出自PEP 498(Literal String Interpolation,字面字符串插值),从Python3.6版本引入。其特点是在字符串前加 f 标识,字符串中间则用花括号{}包裹其它字符串变量。

这种方式在可读性上秒杀format()方式,处理长字符串的拼接时,速度与join()方法相当。

name = 'world'
my_name = '谢欣然'
print(f'Hello {name}, my name is {my_name}.')
# hello world, my name is 谢欣然.

标签:字符,join,name,format,print,Python3.7,字符串
来源: https://www.cnblogs.com/rainbow-ran/p/12201686.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有