文章目录

  • 1、 字符串字面值
  • 2、转义字符
  • 3、字符串的相关方法
    • 3.1 字符串的拼接
    • 3.2 不可变序列的方法
    • 3.3 切片
    • 3.4 字符串函数
  • 4、格式化字符串
    • 4.1、格式化字符串字面值
    • 4.2、str.format()
    • 4.3、printf 风格的字符串格式化

Python 05-字符串

在 Python 中处理文本数据是使用 str 对象,也称为 字符串。 字符串是由 Unicode 码位构成的可变 序列。 字符串字面值有多种不同的写法:

  • 单引号: '允许包含有 "双" 引号'
  • 双引号: "允许包含有 '单' 引号"
  • 三重引号: '''三重单引号''', """三重双引号"""
    使用三重引号的字符串可以跨越多行 —— 其中所有的空白字符都将包含在该字符串字面值中。

1、 字符串字面值

  • 由空格分隔的多个字符串字面值会被隐式地转换为单个字符串字面值。 也就是说,("spam " "eggs") == "spam eggs"
  • 使用前缀 'b''B';它们生成 bytes 类型而非 str 类型的实例。它们只能包含 ASCII 字符;字节对应数值在128及以上必须以转义形式来表示。
  • 使用前缀 'r''R';这种字符串被称为 原始字符串 ,其中的反斜杠会被当作其本身的字面字符来处理。
  • 使用前缀 'f''F' 前缀的字符串字面值称为 格式化字符串字面值'f' 可与 'r' 连用,但不能与 'b''u' 连用,因此存在原始格式化字符串,但不存在格式化字节串字面值

2、转义字符

注意:python是没有字符这种类型的

可用的转义序列如下:

转义序列 含义 注释
\newline 反斜杠加换行全被忽略
\\ 反斜杠 (\)
\' 单引号 (')
\" 双引号 (")
\a ASCII 响铃 (BEL)
\b ASCII 退格 (BS)
\f ASCII 进纸 (FF)
\n ASCII 换行 (LF)
\r ASCII 回车 (CR)
\t ASCII 水平制表 (TAB)
\v ASCII 垂直制表 (VT)
\ooo 八进制数 ooo 码位的字符 最多三个八进制数
\xhh 十六进制数 hh 码位的字符 必须为两个十六进制数

仅在字符串字面值中可用的转义序列如下:

转义序列 含义 注释
\N{name} Unicode 数据库中名称为 name 的字符
\uxxxx 16位十六进制数 xxxx 码位的字符 必须为四个十六进制数
\Uxxxxxxxx 32位16进制数 xxxxxxxx 码位的字符必须为八个十六进制数

3、字符串的相关方法

3.1 字符串的拼接

  1. 三重引号:"""…""" 或 ‘’’…’’’。字符串中的回车换行会自动包含到字符串中

    >>> str = """hello
    ... world"""
    >>> print(str)
    hello
    world
    

    如果不想包含,在行尾添加一个 \ 即可。

    >>> str = """ hello \
    ... world"""
    >>> print(str)hello world
    
  2. 使用 + 进行连接(粘到一起)
    连接变量 也使用 +

    >>> 'hello' + 'world'
    'helloworld'
    
  3. 也可以用 * 进行重复:

    >>> 'hello '*3
    'hello hello hello '
    
  4. 相邻的两个或多个 字符串字面值 会自动连接

    >>> 'hello '    'world'
    'hello world'
    

3.2 不可变序列的方法

str 本身是不可变序列,所以可以使用一些通用的方法

  • 通用序列操作。

    运算 s =“1234567890” t = “abbcccdddd” 注释
    x in s x = ‘0’ --> True; x = ‘a’ --> False;
    x not in s x = ‘0’ --> False; x = ‘a’ --> True;
    s + t st 相拼接
    s * nn * s 相当于 s 与自身进行 n 次拼接
    s[i] 索引从左到右:0~n-1
    索引从右到左:-1~-n
    s[i:j] sij 的切片,s[2:3] = “23”
    s[i:j:k] sij 步长为 k 的切片 s[1:3:2] = “1”
    len(s) s 的长度 10
    min(s) s 的最小项 ‘0’
    max(s) s 的最大项 ‘9’
    s.index(x[, i[, j]]) xs 中首次出现项的索引号(索引号在 i 或其后且在 j 之前)
    s.index(1,0,10) = 1
    s.count(x) xs 中出现的总次数, 统计

3.3 切片

​ 字符串的切片用的比较多,从序列中抽出来学习,通过索引实现切片功能,切片的开始总是被包括在结果中,而结束不被包括。

  • 索引 --支持下标,支持负数

    # 长度 5 的字符串
    >>> s = "01234"
    # 正向索引  【0~4】
    >>> s[0]
    '0'
    >>> s[4]
    '4'
    # 正向索引  【-1~ -5】
    >>> s[-1]
    '4'
    >>> s[-5]
    '0'
    
  • 切片表示法

    >>> s = "01234"
    >>> s[2:4]
    '23'
    >>> s[-1:-3]
    ''
    >>> s[-3:-1]
    '23'
    
  • 切片的索引有默认值;省略开始索引时默认为0,省略结束索引时默认为到字符串的结束

    >>> s = "01234"
    >>> s[:3]      # s[0:3]
    '012'
    >>> s[3:0]      # s[3:4]
    '34'
    

3.4 字符串函数

函数 功能
str.capitalize() 返回字符串的副本,其首个字符大写,其余为小写 >>> “hello world!”.capitalize()
‘Hello world!’
str.casefold() 返回原字符串消除大小写的副本 >>> “helLo World”.casefold()
‘hello world’
str.count(sub[, start[, end]]) 子字符串 sub 在 [start, end] 范围内非重叠出现的次数。
str.encode(encoding=“utf-8”, errors=“strict”) 返回原字符串编码为字节串对象的版本 >>> “hello”.encode()
b’hello’
str.expandtabs(tabsize=8) 返回字符串的副本,其中所有的制表符会由一个或多个空格替换
str.find(sub[, start[, end]]) 返回子字符串 subs[start:end] 切片内被找到的最小索引。
str.index(sub[, start[, end]])
str.startswith(prefix[, start[, end]])
str.endswith(suffix[, start[, end]]) 字符串是否以 suffix 结束
str.format(*args, **kwargs) 执行字符串格式化操作。 见格式化部分
str.format_map(**mapping)
str.join(iterable)
str.lower()
static str.maketrans(x[, y[, z]])
str.partition(sep)
str.replace(old, new[, count])
str.split(sep=None, maxsplit=-1)
str.splitlines([keepends])
str.strip([chars])
str.zfill(width)

4、格式化字符串

4.1、格式化字符串字面值

格式化字符串字面值 或称 f-string 是带有 'f''F' 前缀的字符串字面值。

这种字符串可包含替换字段,即以 {} 标示的表达式部分。

  • 默认使用

    >>> year = 2000
    >>> f = f'This year is: {year}'
    >>> print(f)This year is: 2000
    
  • 嵌套使用
    顶层的格式说明符可以包含有嵌套的替换字段。这些嵌套字段也可以包含有自己的转换字段和 格式说明符,但不可再包含更深层嵌套的替换字段。这里的 格式说明符微型语言 与字符串 .format() 方法所使用的相同。

    >>> width = 10
    >>> precision = 4
    >>> value = decimal.Decimal("12.34567")
    >>> f"result: {value:{width}.{precision}}"  # nested fields'result:      12.35'
    
  • 包含 ‘=’ 符号 , 输出表达式
    在提供了等于号 ‘=’ 的时候,输出将包含表达式文本,’=’ 以及求值结果。 左花括号 ‘{’ 之后包含在表达式中及 ‘=’ 后的空格将在输出时被保留。

    >>> year = 2000
    >>> f'{year = }''year = 2000'
    
  • 以冒号 ‘:’ 标示的格式说明符

    >>> from datetime import date
    >>> today = date(2000,1,1)
    >>> f"{today:%B %d, %y}"'January 01, 00'
    
  • 替换字段的语法:

    replacement_field ::=  "{" [field_name] ["!" conversion] [":" format_spec] "}"field_name        ::=  arg_name ("." attribute_name | "[" element_index "]")*arg_name          ::=  [identifier | digit+]attribute_name    ::=  identifierelement_index     ::=  digit+ | index_stringindex_string      ::=  <any source character except "]"> +conversion        ::=  "r" | "s" | "a"format_spec       ::=  <described in the next section>
    

    ​ replacement_field 替换字段开头可以用一个 field_name 指定要对值进行格式化并取代替换字符被插入到输出结果的对象。 field_name 之后有可选的 感叹号 ‘!’ 加 conversion 字段,以及 一个冒号 ‘:’ 加 format_spec字段组成。

4.2、str.format()

  • 标准格式说明符 的一般形式如下:

    format_spec     ::=  [[fill]align][sign][#][0][width][grouping_option][.precision][type]fill            ::=  <any character>align           ::=  "<" | ">" | "=" | "^"sign            ::=  "+" | "-" | " "width           ::=  digit+grouping_option ::=  "_" | ","precision       ::=  digit+type            ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
    

    '#' 选项可以让“替代形式”被用于转换。 替代形式会针对不同类型分别定义。 此选项仅对整数、浮点数和复数类型有效。 对于整数类型,当使用二进制、八进制或十六进制输出时,此选项会为输出值分别添加相应的 '0b', '0o', or '0x' 前缀。

  • 按位置访问参数:

    >>> '{0}, {1}, {2}'.format('a', 'b', 'c')'a, b, c'
    >>> '{}, {}, {}'.format('a', 'b', 'c')  # 3.1+ only'a, b, c'
    >>> '{2}, {1}, {0}'.format('a', 'b', 'c')'c, b, a'
    >>> '{2}, {1}, {0}'.format(*'abc')      # 解包:unpacking argument sequence'c, b, a'
    >>> '{0}{1}{0}'.format('abra', 'cad')   # arguments' indices can be repeated'abracadabra'
    
  • 按名称访问参数:

    >>> "Point:{x},{y}".format(x="20", y="30")'Point:20,30'
    
  • 访问参数的属性:

    >>> c = 1 + 2j
    >>> "complex {0} : {0.real} {0.imag}".format(c)'complex (1+2j) : 1.0 2.0'
    
  • 访问参数的项:

    >>> coord = (3, 5)
    >>> 'X: {0[0]};  Y: {0[1]}'.format(coord)'X: 3;  Y: 5'
    
  • 替代 %s 和 %r:

    >>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')"repr() shows quotes: 'test1'; str() doesn't: test2"
    
  • 对齐文本以及指定宽度

    >>> '{:<30}'.format('left aligned')'left aligned                  '
    >>> '{:>30}'.format('right aligned')'                 right aligned'
    >>> '{:^30}'.format('centered')'           centered           '
    >>> '{:*^30}'.format('centered')  # use '*' as a fill char'***********centered***********'
    
  • 替代 %x 和 %o 以及转换基于不同进位制的值:

    >>> # format also supports binary numbers
    >>> "int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42)'int: 42;  hex: 2a;  oct: 52;  bin: 101010'
    >>> # with 0x, 0o, or 0b as prefix:
    >>> "int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42)'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'
    
  • 使用逗号作为千位分隔符:

    >>> '{:,}'.format(1234567890)'1,234,567,890'
    
  • 表示为百分数:

    >>> points = 19
    >>> total = 22
    >>> 'Correct answers: {:.2%}'.format(points/total)
    'Correct answers: 86.36%'
    
  • 使用特定类型的专属格式化:

    >>> import datetime
    >>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)
    >>> '{:%Y-%m-%d %H:%M:%S}'.format(d)
    '2010-07-04 12:15:58'
    

4.3、printf 风格的字符串格式化

不详细解释了,可以参看文档

print('%(language)s has %(number)03d quote types.' %{'language': "Python", "number": 2})
Python has 002 quote types.

Python 05-字符串相关推荐

  1. 实用Python之字符串长度计算

    实用Python之字符串长度计算 **  相信在很多时候,大家都会遇到一些字符串的处理,比如你想知道一个常常的字符串到底有多长.很多人可能想到的第一想法就是把这个字符串写入到工程项目中,然后Log打印 ...

  2. Python格式化字符串字面值 | 被官方文档称之为『漂亮』的输出格式

    Python格式化字符串字面值 | 被官方文档称之为『漂亮』的输出格式 本文参考输入输出 - Python 3.7.10 文档.首先声明咱的实验环境. ❯ python --version Pytho ...

  3. Python 将字符串转为字典

    引言 在工作中遇到一个小问题,需要将一个 Python 的字符串转为字典,比如字符串: user_info = '{"name" : "john", " ...

  4. python 遍历字符串

    python 遍历字符串, 可以把字符串当作列表 来遍历即可 第一种方法使用for in 循环 # 使用for in str_a = "Hello,Python" for i in ...

  5. python删除指定位置的字符串_python去除区域 python删除字符串中指定位置字符

    python删除字符串中指定位置字符 原程序是这样的: ser = serial.Serial("/dev/ttyAMA0", 9600) def main字符串的话,你可以把他当 ...

  6. python 遍历字符串的每一个字符_Python之字符串的遍历的4种方式

    python的字符串遍历有4种方式: 1. 下标法 2. for in 3. iter内置函数 4. enumerate 其中下标法和enumerate适合需要判断后续字符的场景,比如循环到下标ind ...

  7. python输入字符串转换为公式_将python字符串转化成长表达式的函数eval实例

    爬一个网页时,要保存的数据都没有encode,就导致保存下来的中文都变成unicode了... 那么,怎么把一个表示字符串的unicode还原成unicode呢? 函数eval(expression) ...

  8. python 替换字符串中的元素

    python 替换字符串中的元素 def str_replace(old_str,old,new):"""在 old_str 字符串中,把 old 替换成 new:par ...

  9. python xml字符串和dict字典互转

    python xml字符串和dict字典互转 字典 转 xml def trans_dict_to_xml(data_dict):"""字典转xml:param data ...

  10. python 判断字符串是否包含另一个字符串_强烈推荐:Python字符串(string)方法整理(一)...

    作者:骏马金龙 原文地址: https://www.cnblogs.com/f-ck-need-u/p/9127699.html python中字符串对象提供了很多方法来操作字符串,功能相当丰富. p ...

最新文章

  1. Ubuntu virtualbox
  2. 招募100名科研人,念出书中内容即可,300元/小时,无经验要求!
  3. 毕设不会做,怎么办??
  4. PHP数组键值双引号单引号区别
  5. mysql+where+且,MySQL WHERE
  6. ecg 幅度_ECG信号中一些运动伪差的讨论
  7. 泉州经贸职业技术学院计算机系,部门简介-泉州经贸职业技术学院网络电教中心...
  8. GNN在谱域下的演化:Spectral CNN,ChebyNet,GCN
  9. zabbix计算型监控项函数last_面试官:如何用zabbix实现监控linux服务器进程使用率...
  10. 比Excel制图更强大,Python可视化工具Altair入门教程
  11. linux中的输出格式化,Linux column使用(格式化输出)
  12. mybatis动态sql片段与分页,排序,传参的使用与一对多映射与resultMap使用
  13. 推荐系统中的前沿技术研究与落地:深度学习、AutoML与强化学习 | AI ProCon 2019
  14. 集合的三种遍历方式/集合的嵌套/产生任意范围内的随机数
  15. (完稿)跟大表哥学常识一,15张思维导图
  16. 一个和尚挑水吃,两个和尚抬水吃,三个和尚没水吃
  17. 【计算机网络】学习笔记
  18. Top,vmstat命令排查CPU使用率,负载问题
  19. 如何在大型系统中提供拼音检索服务
  20. java窗口程序实例_Java Swing快速构建窗体应用程序

热门文章

  1. (附源码)Python二手电脑商城 毕业设计 251713
  2. PHP判断中文字符串的长度和字节长度
  3. OCTAFX滑点滑到令人发指 现在出金也不给出金是黑平台无疑了
  4. cad图转成shp文件并把其平面坐标投影配准成大地坐标(配准针对没有底图的情况)
  5. Python——单线程与多线程
  6. 红米4A全版本通刷_2016111 2016112_官方线刷包_救砖包_解账户锁
  7. (十一:2020.08.28)CVPR 2017 追踪之论文纲要(译)
  8. python批量分析表格_老板让我从几百个Excel中查找数据,我用Python一分钟搞定!...
  9. [禅悟人生]真知从实践中来
  10. 三子棋(九宫棋)游戏的实现(详细片)