python如何正确的操作字符串
作者:Andurils 发布时间:2023-12-28 02:46:30
目录
0x01 字符串(string)
引号转义
拼接字符串
长字符串
索引( indexing)
运算符in
创建列表
切片赋值
0x02 字符串格式化
模板字符串
字符串方法format
0x03 如何设置格式
字段名
转换标志
格式说明
0x04 字符串方法
常量
填充方法
split
0x01 字符串(string)
字符串是 Python 中最常用的数据类型,同时支持单引号和双引号。使用双引号时打印字符串时用单引号。
>>> "Hello world!"
'Hello world!'
>>> 'Hello world!'
'Hello world!'
>>> "Let's go!"
"Let's go!"
>>> 'she said "Hello world!" '
'she said "Hello, world!" '
引号转义
上述示例可使用反斜杠(\)对引号进行转义。
>>> 'Let\'s go!'
"Let's go!"
>>> "\"Hello, world!\" she said"
'"Hello, world!" she said'
拼接字符串
通常使用 +号拼接字符串,像数字相加一样。
>>> "she said " + '"Hello world!"'
'she said "Hello world!"'
>>> a = "she said "
>>> b = '"Hello world!"'
>>> a + b
'she said "Hello world!"'
依次输入两个字符串时,也可实现字符串拼接。
>>> "she said " '"Hello world!"'
'she said "Hello world!"'
# 只有输入的是字符串才有用
>>> a = "she said "
>>> b = '"Hello world!"'
>>> a b
File "<stdin>", line 1
a b
^
SyntaxError: invalid syntax
长字符串
可使用三引号表示很长的字符串(跨越多行的字符串)。
>>> """like this"""
'like this'
>>> print('''long long ago!
"Hello world!"
she said.''')
long long ago!
"Hello world!"
she said.
常规字符串也可横跨多行。只要在行尾加上反斜杠,反斜杠和换行符将被转义,即被忽略。
>>> 1 + 2 + \
4 + 5
12
>>> print("Hello \
world!")
Hello world!
>>> print \
('Hello world')
Hello world
索引( indexing)
对于字符串字面量,可直接对其执行索引操作,无需先将其赋给变量。
>>> 'Hello'[1]
'e'
如果函数调用返回一个序列,可直接对其执行索引操作。
>>> yearnum = input('please input year: ')[3]
please input year: 2021
>>> yearnum
'1'
将序列与数字n相乘时,将重复这个序列n次来创建一个新序列。
>>> 'python' * 3
'pythonpythonpython'
运算符in
要检查特定的值是否包含在序列中,可使用运算符in
>>> access_mode = 'rw+'
>>> 'w' in access_mode
True
>>> 'x' in access_mode
False
>>> subject = '$$$ Get rich now!!! $$$'
>>> '$$$' in subject
True
创建列表
使用函数list ,可以快速将字符串转换成一个字符列表。
>>> somelist = list('Hello')
>>> somelist
['H', 'e', 'l', 'l', 'o']
将字符列表转换为字符串。
>>>''.join(somelist)
切片赋值
>>> name = list('Perl')
>>> name
['P', 'e', 'r', 'l']
>>> name[2:] = list('ar')
>>> name
['P', 'e', 'a', 'r']
>>> name = list('Perl')
>>> name[1:] = list('ython')
>>> name
['P', 'y', 't', 'h', 'o', 'n']
0x02 字符串格式化
格式字符串中的%s称为转换说明符,指出了要将值插入什么地方 并在右边指定要设置其格式的值。指定要设置其格式的值时,可使用单个值(如字符串或数字),可使用元组(如果要设置多个值的格式),还可使用字典,其中最常见的是元组。
>>> format = "Hello, %s. %s !"
>>> values = ('world', 'python')
>>> format % values
'Hello, world. python !'
模板字符串
包含等号的参数称为关键字参数,
>>> from string import Template
>>> tmpl = Template("Hello, $param1! $param2 !")
>>> tmpl.substitute(param1="world", param2="Python")
'Hello, world! Python !'
字符串方法format
>>> "{}, {} and {}".format("first", "second", "third")
'first, second and third'
>>> "{0}, {1} and {2}".format("first", "second", "third")
'first, second and third'
>>> "{3} {0} {2} {1} {3} {0}".format("be", "not", "or", "to")
'to be or not to be'
>>> from math import pi
>>> "{name} 约等于 {value:.2f}.".format(value=pi, name="π")
'π 约等于 3.14.''
如果变量与替换字段同名,还可使用一种简写。在这种情况下,使用f字符串——在字符串前面加上f。(Python 3.6+)
>>> from math import e
>>> f"Euler's constant is roughly {e}." # 等价于 "Euler's constant is roughly {e}.".format(e=e)
"Euler's constant is roughly 2.718281828459045."
0x03 如何设置格式
字符串包含有关如何设置格式的信息, 而这些信息是使用一种微型格式指定语言 (mini-language)指定的。每个值都 * 入字符串中,以替换用花括号括起的替换字段。 替换字段由如下部分组成,其中每个部分 都是可选的。
字段名:索引或标识符,指出要设置哪个值的格式并使用结果来替换该字段。除指定值 外,还可指定值的特定部分,如列表的元素。
转换标志:跟在叹号后面的单个字符。当前支持的字符包括r(表示repr)、s(表示str) 和a(表示ascii)。如果你指定了转换标志,将不使用对象本身的格式设置机制,而是使 用指定的函数将对象转换为字符串,再做进一步的格式设置。
格式说明符:跟在冒号后面的表达式(这种表达式是使用微型格式指定语言表示的)。格 式说明符让我们能够详细地指定最终的格式,包括格式类型(如字符串、浮点数或十六 进制数),字段宽度和数的精度,如何显示符号和千位分隔符,以及各种对齐和填充方式。
字段名
只需向format提供要设置其格式的未命名参数,并在格式字符串中使用 未命名字段。此时,将按顺序将字段和参数配对。你还可给参数指定名称,这种参数将被用于相 应的替换字段中。你可混合使用这两种方法。
>>> "{foo} {} {bar} {}".format(1, 2, bar=4, foo=3)
'3 1 4 2'
还可通过索引来指定要在哪个字段中使用相应的未命名参数,这样可不按顺序使用未命名 参数。
>>> "{foo} {1} {bar} {0}".format(1, 2, bar=4, foo=3)
'3 2 4 1'
并非只能使用提供的值本身,而是可访问其组成部分,可使用索引,还可使用句点表示法来访问导入的模块中的方法、属性、变量和函 数
>>> fullname = ["Alfred", "Smoketoomuch"]
>>> "Mr {name[1]}".format(name=fullname)
'Mr Smoketoomuch'
>>> import math
>>> tmpl = "The {mod.__name__} module defines the value {mod.pi} for π"
>>> tmpl.format(mod=math)
'The math module defines the value 3.141592653589793 for π'
转换标志
(s、r和a)指定分别使用str、repr和ascii进行转换。函数str通常创建外观 普通的字符串版本\。函数repr尝试创建给定值的Python表 示(这里是一个字符串字面量)。函数ascii创建只包含ASCII字符的表示。
>>> print("{pi!s} {pi!r} {pi!a}".format(pi="π"))
π 'π' '\u03c0'
格式说明
(即冒号后面)使用字符f(表示定 点数)。
>>> "The number is {num}".format(num=42)
'The number is 42'
>>> "The number is {num:f}".format(num=42)
'The number is 42.000000'
>>> "The number is {num:b}".format(num=42)
'The number is 101010'
0x04 字符串方法
常量
模块string中几个很有用的常量
string.digits:包含数字0~9的字符串。
string.ascii_letters:包含所有ASCII字母(大写和小写)的字符串。
string.ascii_lowercase:包含所有小写ASCII字母的字符串。
string.printable:包含所有可打印的ASCII字符的字符串。
string.punctuation:包含所有ASCII标点字符的字符串。
string.ascii_uppercase:包含所有大写ASCII字母的字符串。
填充方法
字符串填充字符方法
center、 ljust、 rjust、 zfill
split
如果没有指定分隔符,将默认在单个或多个连续的空白字符(空格、制表符、换行符 等)处进行拆分
>>> seq = ['1', '2', '3', '4', '5']
>>> sep = '+'
>>> sep.join('+') # 合并一个字符串列表
'1+2+3+4+5'
>>> '1+2+3+4+5'.split('+')
['1', '2', '3', '4', '5']
>>> 'Using the default'.split()
['Using', 'the', 'default']
来源:https://juejin.cn/post/6974786118017351694
猜你喜欢
- 下面进行一个高维线性实验假设我们的真实方程是:假设feature数200,训练样本和测试样本各20个模拟数据集num_train,num_t
- JavaScript的Array对象有一个sort方法,用于实现对数组元素的排序,该方法默认按照数组项ASCII 字符顺序升序排列
- 我们都有过函数调用的经历,那么call调用类实例的过程就跟函数很相似。类的用法很多人都知道了,类实例又是什么呢?可以把类看成一个设计图,类实
- 唉,可怜呀,用了这么久的SQL今天头一次用到外连接,效果不错,方法如下: 使用外联接 仅当至少有一个同属于两表的行符合联接条件时,内联接才返
- 一.概念简介 脚本:script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。 二.背景 近来在Wind
- 如果你是一位前端开发工程师,对“跨平台”一词应该不会感到陌生。像常见的前端框架:比如React、Vue、Angular,它们可以做网页端,也
- 1.由于不支持博客首页到文章详情页的跳转,只能打开第一篇文章的详情页2.所以需要做以下工作:设计文章详情页的url,完善视图函数逻辑,实现首
- 1. Scrapy简介Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等
- 今天仔细研究了下GD的一些相关技术,顺手也研究下GD中文乱码的问题。 使用GD库输出中文字符串,调用imagestring是没有
- 前言随着我们不断地在一个文件中添加新的功能, 就会使得文件变得很长。 即便使用了继承,也抑制不住类的成长。为了解决这一问题,我们可以将类存储
- 基于TCP协议的套接字编程实现电话沟通为例,这里传递的是字符,可以自己尝试去发送一个文件# 服务端import socket# 1. 符合T
- 本文实例讲述了python实现的AES双向对称加密解密与用法。分享给大家供大家参考,具体如下:高级加密标准(Advanced Encrypt
- 学习前言在前一段时间已经完成了卷积神经网络的复习,现在要对循环神经网络的结构进行更深层次的明确。RNN简介RNN 是当前发展非常火热的神经网
- 项目场景:最近在部署项目之后,运行出现报错:Expression #1 of SELECT list is not in GROUP BY
- 模块在python编程中的地位举足轻重,熟练运用模块可以大大减少代码量,以最少的代码实现复杂的功能。下面介绍一下在python编程中如何导入
- 分区表的概念 分区致力于解决支持极大表和索引的关键问题。它采用他们分解成较小和易于管理的称为分区的片(piece)的方法。一旦分区被定义,S
- 本文实例讲述了JS实现文字放大效果的方法。分享给大家供大家参考。具体实现方法如下:<!DOCTYPE html PUBLIC &quo
- 动手写个小组件(组件入门) 这篇文章主要是为想将自己的ASP水平提高的人写的! 把ASP代码变成组件,开发者不仅是加快了ASP的速度,而且也
- 主机环境:(Python2.7.9 / Win8_64 / bs4)利用BeautifulSoup4来抓取 www.pm25.com 上的P
- 本代码将用到wxpy模块,使用前请确保已成功安装。我喜欢命令行安装:接着就可以开始码啦:开头的红色部分为注释,去掉仍然可以运行,有效代码仅七