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 谢欣然.

原文地址:https://www.cnblogs.com/rainbow-ran/p/12201686.html

时间: 2024-08-30 14:48:01

Python3.7之字符串的相关文章

python3学习之字符串

s='this is test message' s.capitalize()    首字母大写,其它小写 s.find(sub[, start[, end]])      在指定范围内(默认全部字符串),查找sub是否包含在字符串中,包含时                                             返回第一次匹配的index,否则返回-1 s.rfind(sub[, start[, end]])    在指定范围内(默认全部字符串),查找sub是否包含在字符串中,

python3倒叙字符串

google测试工程师的一道题: 设计一个函数,使用任意语言,完成以下功能: 一个句子,将句子中的单词全部倒排过来,但单词的字母顺序不变.比如,This is a real world,输出结果为 world real a is this. 下面利用python来实现: 句子为: 1 #!/usr/bin/env python3.4 2 # -*- coding: utf-8 -*- 3 4 #某一段文字 5 data = "You don’t need us to tell you that

python3基础之 字符串切片

一.python3中,可迭代对象有:列表.元组.字典.字符串:常结合for循环使用:均可使用索引切片 实例: 1 str = '0123456789' #str[start:stop:step] 遵循[左闭右开]规则 2 3 print(str[0:3]) #截取第一位到第三位的字符 #012 4 print(str[1:5]) #截取第二位到第六位之前的字符 #1234 5 print(str[:]) #截取字符串的全部字符 #0123456789 6 print(str[6:]) #截取第七

python3中的字符串,二进制的转化

二进制&十六进制转换表: 十六进制 0 1 2 3 4 5 6 7 二进制 0000 0001 0010 0011 0100 0101 0110 0111 十六进制 8 9 A B C D E F 二进制 1000 1001 1010 1011 1100 1101 1110 1111 转换方法: 取四合一法:从二进制小数点为分隔符,向左或向右每四位二进制合为一位十六进制. 例子:1011| 1001 |1011.1001 B      9       B .  9 十六进制表示方法:在数字前标记

Python3教程之字符串

Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用,Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符.如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串: >>> print(r"Chiang\n") Chiang\n Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始.并且与 其他语言字符串不同的是,Python 字符串不能被改变.向一个索

python3 f-string格式化字符串的高级用法

从Python 3.6开始,f-string是格式化字符串的一种很好的新方法.与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在Python 3.6之前,有两种将Python表达式嵌入到字符串文本中进行格式化的主要方法:%-formatting和str.format(). %-formatting 字符串对象具有使用%运算符的内置操作,您可以使用它来格式化字符串. name = "tom" print("猫的名字叫%s"%name) 输出:

Python3基础 str + 字符串变量拼接

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code [email protected]:~$ source activate py37 (py37) [email protected]:~$ ipython Python 3.7.0 (default, Jun 28 2018, 13:15:42) Type 'copyright'

Python3 字符串前面加u,r,b的含义

u/U:表示unicode字符串 不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码. 一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般不带u:但是中文, 必须表明所需编码, 否则一旦编码转换就会出现乱码. 建议所有编码方式采用utf8.在python3中,字符串默认为unicode字符串. 例子: u"我是含有中文字符组成的字符串." 作用: 后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导

相比于python2.6,python3.0的新特性。

这篇文章主要介绍了相比于python2.6,python3.0的新特性.更详细的介绍请参见python3.0的文档. Common Stumbling Blocks 本段简单的列出容易使人出错的变动. print语句被print()函数取代了,可以使用关键字参数来替代老的print特殊语法.例如: Old: print "The answer is", 2*2 New: print("The answer is", 2*2) Old: print x,