当前位置: 首页 > news >正文

【基础知识】Python入门:字符串

字符串

大小写字母换来换去

capitalize():字符串首字母大写,其他小写

x = 'I love fishc'
x.capitalize()
'I love fishc'

swapcase():翻转字符串所有字母的大小写

x = 'I love fishc'
x.swapcase()
'i LOVE FISHC'

title():单词首字母大写,其他小写

x = 'I love fishc'
x.title()
'I Love Fishc'

upper():全变大写

x = 'I love fishc'
x.upper()
'I LOVE FISHC'

lower():全变小写(只用于英文)

x = 'I love fishc'
x.lower()
'i love fishc'

casefold():全变小写(可用于英文以外的其他语言)

x = 'I love fishc'
x.casefold()
'i love fishc'

左中右对齐

width参数用于指定字符串的宽度,若指定的宽度小于或等于原字符串,那么则直接输出源字符串

fillchar参数用于指定填充的字符,默认为空格

center(width, fillchar=''):居中

x = "有内鬼,停止交易!"
x.center(15)
'   有内鬼,停止交易!   '

rjust(width, fillchar=''):右对齐

Ijust(width, fillchar=''):左对齐

x.ljust(15)
'有内鬼,停止交易!      '
x.rjust(15)
'      有内鬼,停止交易!'

zfill(width):用0填充字符串左侧,多用于数据报表

x.zfill(15)
'000000有内鬼,停止交易!'

实现字符串的查找功能

count(sub[, start[, end]]):用于查找sub参数指定的子字符串在字符串中出现的次数

x = "上海自来水来自海上"
x.count("海")
2
x.count("海",0,5)
1

find(sub[, start[, end]]):用于定位sub参数指定的子字符串在字符串中的索引下标值。找不到返回-1

rfind(sub[, start[, end]]):同上,但是从右往左检索

x = "上海自来水来自海上"
x.find("海")
1
x.rfind("海")
7

index(sub[, start[, end]]):同find(),但是find在找不到对应的字符串会返回-1,index则抛出异常

x = "上海自来水来自海上"
x.index("我")
Traceback (most recent call last):File "<pyshell#23>", line 1, in <module>x.index("我")
ValueError: substring not found

rindex(sub[, start[, end]]):同上,但是从右往左检索

替换

expandtabs([tabsize=8]):使用空格替换制表符,参数是指定一个tab等于多少个空格

code = """print("i love fishc")
\tprint("love coding")"""
print(code)print("i love fishc")print("love coding")
new_code = code.expandtabs(6)
print(new_code)print("i love fishc")print("love coding")

replace(old, new, count=-1):返回一个将old参数指定的子字符串替换为new参数指定的字符串的新字符串,count为替换的次数,默认为-1,相当于替换全部

"在吗!来玩!".replace("在吗","hello")
'hello!来玩!'

translate(table):返回一个根据table参数转换后的新字符串,table用以指定一个转换规则的表格(加密),table表格需要使用str.maketrans(x, y, z)来获取

table = str.maketrans("ABCDEFG","1234567")
"I Love FishC".translate(table)
'I Love 6ish3'
"I Love FishC".translate(str.maketrans("ABCDEFG","1234567"))
'I Love 6ish3'

str.maketrans(x, y, z):x:指定需要替换的字符。y:指定替换的目标字符。z:删除对应的字符

"I Love FishC".translate(str.maketrans("ABCDEFG","1234567","Love"))
'I 6ish3'

字符串各种情况下的判断和检测

以下方法返回都是布尔类型的值

startswith(prefix[, start[, end]]):判断参数指定的子字符串是否出现在字符串起始位置

endswith(suffix[, start[, end]]):判断参数指定的子字符串是否出现在字符串结束位置

start和end参数指定查找的开始和结束位置([]内的内容表示可选参数)

x = "我爱Pyhon"
x.startswith("我")
True
x.endswith("Pyhon")
True
x.startswith("爱")
False
x.endswith("pyt")
False
x.startswith("爱",1)
True
x.endswith("Py", 0, 4)
True

以上两个方法的参数支持以元组的形式传入,同时查找多个子字符串

isupper():判断字符串中所有字母是否大写

x = "I love python"
x.isupper()
False
x.upper().isupper() #从左到右依次调用,现将所有字符串改为大写再判断
True

islower():判断字符串中所有字母是否小写

istitle():判断字符串中所有单词是否以大写开头、其余字母小写

isalpha():判断字符串中是否只由字母构成

isspace():判断字符串中是否是空白字符串,空格、tab、转自字符、\n

isprintable():判断字符串中是否所有字符串都是可打印的,\n为非打印字符

isdecimal():判断是否为数字

isdigit():同上

isnumeric():同上

三个检测是否是数字的方法,能检测的范围不一样。例如isdecimal()只能检测123,isnumeric()可以检测罗马数字、中文数字等。根据不同的需求选择不同的方法。

isalnum():检测是否为数字或者字母,只要isalpha()、isdecimal()、isdigit()、isnumeric()几个方法任何一个会返回True,它都会返回True

isidentifier():判断字符串是否是一个合法的python标识符

isascii():判断是否空字符串或字符串中每个字符都是ASCII编码的字符

判断一个字符串是否为python的保留标识符:keyword模块的iskeyword函数

import keyword
keyword.iskeyword("if")
True
keyword.iskeyword("python")
False

截取字符串

strip(chars=None):截掉字符串左侧和右侧的空白

Istrip(chars=None):截掉字符串左侧的空白

rstrip(chars=None):截掉字符串右侧的空白

char用来设置截掉的匹配字符,可以是多个字符,用一个字符串表示,默认是空白。按单个字符为单位查找并踢掉

"       左侧不要留白".lstrip()
'左侧不要留白'
"右侧不要留白         ".rstrip()
'右侧不要留白'
"       左右不要留白      ".strip()
'左右不要留白'"www.ilovefishc.com".lstrip("wcom.")
'ilovefishc.com'
"www.ilovefishc.com".rstrip("wcom.")
'www.ilovefish'
"www.ilovefishc.com".strip("wcom.")
'ilovefish'

removeprefix(prefix):从前面截掉一个具体的子字符串

removesuffix(suffix):从前面截掉一个具体的子字符串

"www.ilovefishc.com".removeprefix("www.")
'ilovefishc.com'
"www.ilovefishc.com".removesuffix(".com")             
'www.ilovefishc'

拆分和拼接

partition(sep):将字符串以参数指定的字符为分隔符对字符串进行拆分,从左边开始匹配,只匹配拆分一次,返回一个三元组

rpartition(sep):同上,只是从右边匹配

"www.ilovefishc.com".partition(".")  
('www', '.', 'ilovefishc.com')"www.ilovefishc.com".rpartition(".")
('www.ilovefishc', '.', 'com')

split(sep=None, maxsplit=-1):将字符串拆分成若干个字符串,sep:拆分的分隔符,默认空格,maxsplit:拆分次数,也就是匹配分隔符的次数

rsplit(sep=None, maxsplit=-1):同上,但从右往左

"苟日新,日日新,又日新".split()
['苟日新,日日新,又日新']
"苟日新,日日新,又日新".split(",")
['苟日新', '日日新', '又日新']
"苟日新,日日新,又日新".split(",",1)
['苟日新', '日日新,又日新']
"苟日新,日日新,又日新".rsplit(",",1)
['苟日新,日日新', '又日新']

splitlines(keepends=False):将字符串按行进行分割,将结果以列表的形式返回,keepends参数用于设定返回的列表是否包含换行符本身,若为True,换行符将包含到上一个字符串中去。可以用于需要按行进行字符串分割,但不同平台换行符的转义字符不同的情况。

"苟日新\r日日新\r又日新".splitlines()
['苟日新', '日日新', '又日新']
"苟日新\r\n日日新\r\n又日新".splitlines()
['苟日新', '日日新', '又日新']
"苟日新\r\n日日新\r\n又日新".splitlines(True)
['苟日新\r\n', '日日新\r\n', '又日新']

join(iterable):将字符串拼接起来。join的效率比加号高很多,在大数量情况下甚至会快上千倍。

".".join(["www","lovefishc","com"])
'www.lovefishc.com'
"~".join(["www","lovefishc","com"])
'www~lovefishc~com'
"".join(["fishc","fishc"])  #在体量大时,拼接效率极高
'fishcfishc'

格式化字符串

format():在字符串中使用一对花括号来表示替换字符串,替换的字符串为format()的参数,花括号中可以填上数字,表示引用参数的位置,同一个参数可以被引用多次,也可以使用关键字进行索引,参数中的字符串当做元组来处理。选项可以通过关键字参数来设置选项的值。

完整语法:format_spec::= [[fill]align][sign][#][0][width][grouping_option][.precision][type]

year = 2010
"鱼C工作是成立于 year 年"
'鱼C工作是成立于 year 年'
"鱼C工作是成立于 {} 年".format(year)
'鱼C工作是成立于 2010 年'"{1}和{0}打招呼".format("A", "B")
'B和A打招呼'
"{}和{}打招呼".format("A", "B")
'A和B打招呼''{mounain}上有座{1},{1}里有个{0}'.format('老和尚', '庙', mounain='山')
'山上有座庙,庙里有个老和尚'
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" | "%"

[fill]:指定填充的符号(位置或关键字索引)

[align]:指定对齐方式

‘<’:强制字符串在可用空间内左对齐(默认)

‘>’:强制字符串在可用空间内右对齐

‘=’:强制将填充放置在符号(如果有)之后但在数字之前的位置(这适用于以"+000000120"的形式打印字符串)

‘^’:强制字符串在可用空间内居中

image-20260525162241485

"{:^10}".format(250)
'   250    '
"{:010}".format(520)
'0000000520'
"{:010}".format(-520)
'-000000520'
"{1:%>10}{0:%<10}".format(250,520)
'%%%%%%%520250%%%%%%%'
"{1:0=10}{0:0=10}".format(250,520)
'00000005200000000250'

[sign]:仅对数字类型有效

‘+’:正数在前面添加正好(+),负数在前面添加负号(-)

‘-’:只有负数在前面添加负号(-),默认行为

空格:正数在前面添加一个空格,负数在前面添加负号(-)

"{:_}".format(1234)'1_234'
"{:,}".format(123456789)'123,456,789'

[0]:感知正负号的用0填充空白位置,只对数字有效

[width]:指定填充字符串的宽度

[grouping_option]:设置数字千分位的分隔符,有下划线和逗号

[.precision]:精度,※对于[type]设置为'f或'F'的浮点数来说,是限定小数点后显示多少个数位;

※对于[type]设置为'g'或'G'的浮点数来说,是限定小数点前后一共显示多少个数位;

※对于非数字类型来说,限定的是最大字段的大小

※对于整数类型来说,则不允许使用[.precision]选项

[type]:决定了数据如何来呈现

'b':将参数以二进制形式输出

'c':将参数Unicode字符形式输出

'd':将参数以十进制形式输出

'o':将参数以八进制形式输出

'x':将参数以十六进制形式输出

'X':将参数以十六进制形式输出

'n':与‘d’类似,但会使用当前语言环境设置的分隔符插入到恰当的位置

None:同‘d’

[#]:参数以二进制、八进制或者十六进制在字符串中进行输出的时候会自动追加代表进制的前缀,配合[type]中的进制输出使用

以下适用于浮点数和复数

'e':将参数以科学计数法的形式输出(以字母'e'来标示指数,默认精度为6)

'E':将参数以科学计数法的形式输出(以字母'E'来标示指数,默认精度为6)

'f':将参数以定点表示法的形式输出(“不是数”用'nan'来标示,无穷用'inf'标示,默认精度为6)

'F':将参数以定点表示法的形式输出(“不是数”用'NAN'来标示,无穷用'INF'标示,默认精度为6)

'g':通用格式,小数以'f'形式输出,大数以'e'的形式输出

'G':通用格式,小数以'F'形式输出,大数以'E'的形式输出

'n':跟'g'类似,不同之处在于它会使用当前语言环境设置的分隔符插入到恰当的位置

'%':以百分比的形式输出(将数字乘以100并显示为定点表示法'f'的形式,后面附带一个百分号)

None:类似于'g',不同之处在于当使用定点表示法时,小数点后将至少显示一位,默认精度与给定值所需的精度一致。

f-字符串(f-string)

直接在字符串前加(f-)即可,format方法的语法糖,f-字符串仅支持python3.6以上版本

>>> year = 2010
>>> f"鱼C工作室成立于 {year} 年"
'鱼C工作室成立于 2010 年'
>>>
>>> f"1+2={1+2}, 2的平方是{2*2},3的立方是{3*3*3}"
'1+2=3, 2的平方是4,3的立方是27'
>>>
>>> "{:010}".format(-520)
'-000000520'
>>> f"{-520:010}"
'-000000520'
>>>
>>> "{:,}".format(123456789)
'123,456,789'
>>> f"{123456789:,}"
'123,456,789'
>>>
>>> "{:.2f}".format(3.1415)
'3.14'
>>> f"{3.1415:.2f}"
'3.14'
"{:{fill}{align}{width}.{prec}{ty}}".format(3.14, fill = '+', align = '^', width =10, prec = 3, ty = 'g' )'+++3.14+++'
fill = '+'
align = '^'
width = 10
prec = 3
ty = 'g'
f"{3.1415:{fill}{align}{width}.{prec}{ty}}"
'+++3.14+++'
http://www.rkmt.cn/news/1429489.html

相关文章:

  • CAPL自动化测试避坑指南:TestStepFail和TestStepErrorInTestSystem用错了会怎样?
  • 大模型接口分类
  • Gemini安全审计报告深度溯源:基于137万行日志分析的5阶段攻击生命周期图谱,你的AI服务处于哪一环?
  • QMC-Decoder:3分钟解锁你的QQ音乐加密文件,实现跨平台自由播放
  • 安捷伦(是德)E4990A 阻抗分析仪性能总览
  • Antigravity CLI 上手指南 — 谷歌这个 Agent 编码工具到底怎么样
  • 5分钟掌握浏览器视频下载神器:VideoDownloadHelper完全指南
  • SQL 执行慢?别急着加索引,先看 Explain 执行计划
  • 三步实现移动端AI部署:从模型选型到生产落地的实战指南
  • 【AI工具与MLOps整合实战指南】:20年MLOps专家亲授5大避坑法则,90%团队正在忽略的流水线断裂点
  • 用户故事写不好?Gemini提示工程+INVEST原则双引擎驱动,3天重构需求质量,你还在手动拍脑袋吗?
  • ROFL-Player深度解析:英雄联盟回放文件的架构设计与实现原理
  • 别再只调白平衡了!用OpenCV和Kalibr搞定红外热成像摄像头的温度标定(附完整代码)
  • ESP32与RP2040双核协同打造旋转LED屏:从无线供电到视觉暂留全解析
  • 2026西安黄金回收避雷红黑榜:深扒哪家套路深,千万别去A要去B,到底怎么选不踩坑? - 西安闲转记
  • 实验室建设选EPC还是分包 关键在这里
  • 2026年4月有名的塑料垃圾桶生产厂家口碑推荐,塑料周转框/塑料水箱/塑料周转筐/塑料垃圾桶,塑料垃圾桶厂家推荐分析 - 品牌推荐师
  • 【AI工具故障排除黄金法则】:20年SRE专家亲授7大高频故障的秒级定位与修复流程
  • 杭州黄金回收哪家靠谱?拱墅、上城、萧山三店横评实录 - 百福黄金回收
  • 2026年杭州企业必看:如何选择可靠的GEO源码部署公司深度指南 - 品牌报告
  • D2DX:终极暗黑破坏神2现代化补丁,让经典游戏完美适配现代PC
  • Claude 3.5究竟强在哪?弱在哪?(附237项原子能力打分矩阵):这份被3家FAANG内部传阅的竞品分析PDF正在失效
  • 浏览器如何解析HTML头部:底层逻辑揭秘
  • 上海防水施工安全有保障吗?芮生建设全员投保杜绝施工风险 - 十大品牌榜单
  • 如何将B站缓存视频从m4s格式转换为通用mp4:简单三步搞定
  • 佛山AI短视频哪个靠谱
  • 告别命令行的烦恼:用Pycharm可视化搞定GitHub项目上传与同步(含403/443错误解决)
  • 终极硬件侦探指南:如何与AMD Ryzen处理器深度对话
  • 番茄小说下载器完整指南:三步搞定离线阅读自由
  • 哔哩下载姬全攻略:3步掌握B站视频高效下载技巧