Skip to main content

python学习之路☞4.Python String

python学习之路☞4.Python String

python学习之路☞4.Python String

#python,#string,

Python String

String

A string is a sequence of characters.

也就是说字符串是一种单字符组成的序列

How to create a string

python字符串需要用引号括起来,字符串类型才会被识别

python 字符串常用 ' 引号,很少用 " 引号,用了也不算错

'hello world!'

0

字符串拼接

字符串可以使用类似加法那样拼接

word_add = 'ab' + 'dc'

1

Escaping 转义

有些时候,一些特殊符号会导致python代码报错,这个时候就需要 / 反斜杠转义

'你好\'世界\''

2

还有很多转移字符

\n 换行
\t 制表符(四个空格)
\r 回车(每行光标回到行头)
\\ 反斜杠,转义后的 \

Multiline strings 多行字符串

由三个 ’ 或 " 构成嵌套字符串的结构可以包含多行字符串

可以看到打印的回显信息

'''你好世界,
abcd,
再见世界
'''

3

多行字符串还可以解决特殊符号转义的问题

'''
你好'世界',
a'b'c'd',
再'见'世'界'
'''

4

String operations 操作字符串变量

字符串变量内置了函数,也可以参考官方的字符串文档,在 REPL 界面可以通过 . 并配合按两次 tab 快捷键即可调用那些函数来操作字符串

str_var='hello world!'
str_var
str_var.

5

.upper() .lower() 大小写字符转换,返回字符串类型的数据

str_var='hElLo WoRlD!'
str_var.lower()
str_var.upper()

6

.replace(,) 替换字符串

将目标字符串替换为其他字符串,返回字符串类型的数据

str_var='hElLo WoRlD!'
str_var.replace('o','你好世界') 

7

.split() 拆分字符串

依据函数内匹配的部分字符串对整个字符串拆分,返回 list 类型的数据

函数默认根据空格字符对整个字符串拆分

str_var='hElLo WoRlD!'
str_var.split()

8

还可以根据其他部分字符拆分

str_var='hElLo WoRlD!'
str_var.split('o')

9

Chaining calls 链式调用字符串变量内置函数

可以连续 . 调用多个字符串变量内置函数来达到特定需求

比如将字符串中的 o 替换为 1234 然后在根据 3 拆分字符串为list类型的数据

str_var='hElLo WoRlD!'
str_var.replace('o','1234').upper().split('3')

10

内置函数 len() 获取字符串长度

len('你好世界!')

11

slicing 切片

切片可以理解为截取,通过索引数值可以截取对应位置的字符,字符串的索引值从0开始-1代表结尾

str_var='abcdefghijklmn'
str_var[0]
str_var[2]
str_var[-1]

12

有趣的玩法利用切片,反转序列

在 Python 中,[::-1] 是一种切片操作,用于反转序列(如字符串、列表、元组等)。原理大概是这样,Python 的切片语法是:sequence[start:stop:step]

  • start:起始索引(包含)。
  • stop:结束索引(不包含)。
  • step:步长(正数表示从左到右,负数表示从右到左)。

[::-1] 的作用,Python 通过 step=-1 让索引从末尾向前遍历。由于 start 和 stop 为空,相当于 start=len(str_var)-1,stop=-1(实际是遍历到索引 0)。Python 创建了一个新的反转后的字符串对象(字符串是不可变对象,因此不会在原地修改)

  • start 省略,默认为 None,相当于从序列的开头开始。
  • stop 省略,默认为 None,相当于到序列的末尾结束。
  • step = -1,表示按照逆序的方式遍历整个序列。
str_var='abcdefghijk123456789'
str_var[::-1]

13

string formatting with f-strings 字符串格式化打印

在字符串前加f前缀并配合{}使用变量或表达式达成字符串格式化打印,使得打印变得优雅

clothes_price=25
pants_price=30
f'你好,这件衣服¥{clothes_price},裤子¥{pants_price},一共是¥{clothes_price+pants_price}' 

14

接下来就练习代码吧

'''
总结:
    字符串:由引号嵌套的数据类型
    转义:\n \r \t \\
    多行字符串 ''' ''' 或 """ """
    字符串变量内置函数:
        .upper() 大写转换
        .lower() 小写转换
        .replace(,) 字符串替换
        .split() 字符串拆分
    字符串变量支持链式调用内置函数
    内置函数:
        len() 获取字符串长度
    slicing 切片:
        squence[start:stop:step]
        [::-1] 反转序列
    f-strings:
        字符串格式化打印
'''
str_var='''
aaabbbbccccddddeeeeffffggggg,
你好世界,其实我很痛苦,我不知道,这种痛苦是来源于家庭,还是来自于社会,亦或是互联网,我从中经历过伤害和痛苦,我身边其实都是人,陌生人,老人,中年人,年轻人,小孩子,我仍感觉痛苦孤独,似乎没人理解我,似乎谁都可以唾弃我,人人都说我不重要,说我不行,只能这样了吗?这样活着吗?
'''
str_var.upper().replace('aaa','zzzz').split('\n')
len(str_var)
str_var[::-1]
f'格式化打印:\n{str_var}'

15

参考

strings
string-methods
python-list

Comments

Popular posts from this blog

python学习之路☞9.Comment, Primitive Data Types and Branch Conditional Structure if ... else ...

python学习之路☞9.Comment, Primitive Data Types and Branch / Conditional Structure if … else … #python,#Comment,#data type,#branch/conditional structure,#input(),#int,#float,#complex,#boolean,#if … else …, 注释(Comment) 内置函数input()(input() Function) 基本数据类型整数(Primitive Data Types int) 基本数据类型小数(Primitive Data Types float) 基本数据类型复数(Primitive Data Types complex) 基本数据类型布尔(Primitive Data Types boolean) 分支结构if … else …(Branch / Conditional Structure if … else …) 参考 Comment ''' 注释: 给人看的说明文字,Python 解释器完全忽略 要点 # 让该行 # 之后的内容全部失效,解释器跳过。 行尾注释与代码在同一行,通常用于简短说明。 docstring(三引号字符串)放在函数/类/模块第一行时,可被 help() 和文档工具读取,有特殊意义。 好的注释解释"为什么",而不是"做了什么"(代码本身已经说明了做了什么): # ✗ i = i + 1 # i 加 1 # ✓ i += 1 # 跳过表头行 ''' # 这是单行注释,# 号后面全部忽略 x = 10 # 行尾注释,代码照常执行 # 多行注释:每行都加 # # 第一行说明 # 第二行说明 # 第三行说明 """ 这是多行字符串(docstring) 虽然常被当注释用, 但本质是字符串字面量,不是注释。 通常用于函数/类的文档说明。 """ def add ( a , b ) : """返回 a 与 b 的和。"...

OnePlus 7 Pro LineageOS 23.2 Android 16 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南

OnePlus 7 Pro LineageOS 23.2 Android 16 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南 OnePlus 7 Pro LineageOS 23.2 Android 16 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南 #docker,#linux,#termux,#android,#kernel,#lineageos,#oneplus,#git,#android16, gmkm6 x86_64 主机配置环境 安装配置 docker 防止污染环境 更新 docker 插件 compose 更新 docker 插件 buildx 创建编译容器 容器内编译镜像刷机 安装magisk,termux获取root termux检测内核docker缺失功能 根据内核docker缺失功能编译boot.img并获取root 开启全部必要扩展功能 下面的步骤是开启大部分非必要扩展功能 修补内核代码方案 下面的步骤是开启剩余部分非必要扩展功能 修补内核 安装测试运行 termux docker 其它关于termux的docker-compose和docker-buildx更新 安装用于校验的工具 开机自启动和容器化部署使用例子 Android16尝试开启KVM失败的例子(不用试了,唉) 内核修补 参考&感谢 gmkm6 x86_64 主机配置环境 注意,获取自己的手机型号代号,这一点很重要在后续的命令中都要用到 比如我的手机 oneplus7pro 是 guacamole 也可以尝试通过命令获取获取,但是我不知道是不是所有设备都是这样获取的 adb shell getprop ro.boot.project_codename 最重要的是,一定要找好固件包,免得变成砖头,有线刷包就可以怎么折腾都不怕 听我说,编译内核是一件很枯燥的核对过程,这个过程需要考虑到各项之间的互相依赖和冲突并以此作出取舍 这不是个简单的过程,这里只展示具有逻辑的依赖项,需要耐心和不断的试错总结 不得不说设计的内核是一件件精美的艺术品,从某种意义上来讲,万事万物皆为艺术,而探索艺术本身是...

OnePlus 7 Pro LineageOS 19.1 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南

OnePlus 7 Pro LineageOS 19.1 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南 OnePlus 7 Pro LineageOS 19.1 构建与内核 Docker 支持并在 Termux 上实现容器运行全流程指南 #docker,#linux,#termux,#android,#kernel,#lineageos,#oneplus,#git, gmkm6 x86_64 主机配置环境 安装配置 docker 防止污染环境 更新 docker 插件 compose 更新 docker 插件 buildx 创建编译容器 容器内编译镜像刷机 安装magisk,termux获取root termux检测内核docker缺失功能 根据内核docker缺失功能编译boot.img并获取root 安装测试运行 termux docker 其它关于termux的docker-compose和docker-buildx更新 参考&感谢 注意,获取自己的手机型号代号,这一点很重要在后续的命令中都要用到 比如我的手机 oneplus7pro 是 guacamole 也可以尝试通过命令获取获取,但是我不知道是不是所有设备都是这样获取的 adb shell getprop ro.boot.project_codename 最重要的是,一定要找好固件包,免得变成砖头,有线刷包就可以怎么折腾都不怕 最近 OP7P 设备型号是 guacamole 手机刷了 GM1910_11_H.40 即 android 12 https://gauss-componentotacostmanual-sg.allawnofs.com/remove-d74c973c240292cb011317bb07f424a2/component-ota/23/03/28/6d4604798d27450e8de05671d5effbae.zip 内核版本 4.14.180-perf+ 发现 github.com/OnePlusOSS 官方有相关的开放残缺的内核源码,但缺失了很多代码配置 https://github.com/OnePlusOSS/android_kernel_o...