c++检测a字符串是否包含b字符串_Python全栈之路-3-字符串_weixin_39979080的博客-程序员秘密

技术标签: c替换指定位置字符串  delphi 从字符串末尾向前查找  字符串中查找第一个指定字符c++  c++检测a字符串是否包含b字符串  cstring查找子字符串  qstring查找子字符串  

8c36c830326e0297ef557b4f8bc7e812.png

本文代码

地址​github.com

字符串

字符串是非常常用的数据类型,我们可以使用单引号和双引号来创建字符串,创建字符串非常简单,只需为变量赋予一个字符串值即可

# a和b分别为用单引号和双引号创建的字符串
a = 'Hello World!'
b = "Welcome to Python World!"

# c和d分别为使用三个单引号和三个双引号创建的字符串,且c和d可以保留字符串的原始形式,比如换行符等
c = '''
Hello
World!
'''
d = """
Welcome
to
Python
World!
"""
print(a)
print(b)
print(c)
print(d)

Hello World!
Welcome to Python World!

Hello
World!


Welcome
to
Python
World!

转移字符与原始字符

可以在字符串中使用来表示转义字符,如下为常见的转义字符

1c087b75f2a678d407292003ef112e8e.png
# 输出转义后的字符串
print("Hello World")
print(''Hello World'')
print(""Hello World"")
print("HellonWorld")
print("HellotWorld")

Hello World
'Hello World'
"Hello World"
Hello
World
Hello	World

在Python中以rR开头的字符串被称为原始字符串,在原始字符串中转义字符不再具有特殊意义,而是保持其原始意义

# 输出原始字符串,此时转义字符不再具有特殊意义
print(r"Hello World")
print(r''Hello World'')
print(R""Hello World"")
print(R"HellonWorld")
print(R"HellotWorld")

Hello World
'Hello World'
"Hello World"
HellonWorld
HellotWorld

Python字符串运算符

02cce394ddc5b47e94b796cbb5706fd1.png
# 直接拼接两个字符串
a = "Hello " + "World"
print(a)

# 字符串重复若干次
b = "Hello " * 3
print(b)

# 拼接给定字符串后再赋值
a += "!"
print(a)

# 重复若干次之后再赋值
a *= 3
print(a)

Hello World
Hello Hello Hello 
Hello World!
Hello World!Hello World!Hello World!
a = "Hello World"
b = "Welcome to Python World"

# 字符串比较
print("a > b ?: {}".format(a>b))
print("a >= b ?: {}".format(a>=b))
print("a < b ?: {}".format(a<b))
print("a <= b ?: {}".format(a<=b))
print("a == b ?: {}".format(a==b))

a > b ?: False
a >= b ?: False
a < b ?: True
a <= b ?: True
a == b ?: False
a = "Hello"
b = "World"
c = "Welcome to Python World"

# a是否出现在c中
print(a in c)
# b是否出现在c中
print(b in c)
# a是否没有出现在c中
print(a not in c)
# b是否没有出现在c中
print(b not in c)

False
True
True
False

我们可以通过下标访问字符串,下标索引从0开始,-1表示从末尾位置开始,下标大小必须小于字符串长度,索引格式为变量[start:stop:step]stopstep是可选的,我们通过如下例子来理解字符串的下标访问

a = "Welcome to Python World!"

# 第一个字符
print(a[0])
# 最后一个字符
print(a[-1])
# 下标从2开始,到12结束
print(a[2:13])
# 下标从2开始,到12结束,步长为2
print(a[2:13:2])
# 下标从2开始,一直到末尾,省略末尾索引表示一直到字符串末尾
print(a[2:])
# 下标从0开始,到12结束,省略开头索引表示索引从0开始
print(a[:13])
# 同时省略开头和结尾表示下标从0开始一直到末尾
print(a[:])
# 反向索引,从倒数第11个字符开始,到倒数第4个字符结束
print(a[-11:-3])
# 从倒数第一个字符开始,到倒数末尾字符结束,这里实现的是字符串reverse操作
print(a[::-1])

W
!
lcome to Py
loet y
lcome to Python World!
Welcome to Py
Welcome to Python World!
thon Wor
!dlroW nohtyP ot emocleW

格式化字符串

格式字符串包含有以花括号{}括起来的替换字段,不在花括号之内的内容被视为字面文本,会不加修改地复制到输出中.

# {}将会按顺序被format中的参数替换
print("{} -> {}".format("apple", "banana"))

apple -> banana
# 可以通过整数索引显式指定参数的替换顺序,参数索引从0开始
print("{1} -> {0}".format("apple", "banana"))

banana -> apple
# 可以显式使用字段名进行替换
print("{year} -> {month}".format(year=2020, month=12))

2020 -> 12

格式化输出时可以指定对齐方式,对齐表示如下

4fc262c5a36dce51af7e1025fffc149b.png
data = [1, 10, 100, 1000, 10000]
for i in data:
    print("{:<}".format(i))  # 左对齐

1
10
100
1000
10000
for i in data:
    print("{:>5}".format(i)) # 右对齐,对齐时可以显式指定输出宽度,这里指定输出宽度为5

1
   10
  100
 1000
10000
for i in data:
    print("{:^5}".format(i)) # 居中对齐,对齐时可以显式指定输出宽度,这里指定输出宽度为5

1  
 10  
 100 
1000 
10000
# 指定输出小数点位数
a = 3.1415926

# 保留2位小数
print("{:.2f}".format(a))

3.14
# 输出百分号
a = 0.93333333
print("{:.2%}".format(a))

93.33%
# 指定数字输出进制
a = 30

# 默认以十进制格式输出
print("{}".format(a))
# 以二进制格式输出
print("{:#b}".format(a))
# 以八进制格式输出
print("{:#o}".format(a))
# 以十六进制格式输出
print("{:#x}".format(a))

30
0b11110
0o36
0x1e

字符串常用方法

count(sub, [start[,end]])返回子字符串sub[start, end]范围内出现的次数,startend都是可选参数

a = "Helloo Woorld Helloo Woorld"

# 计算子字符串所有出现的次数
print(a.count("oo"))
# 给定起始范围
print(a.count("oo", 10))
# 给定起始和结束范围
print(a.count("oo", 10, 20))

4
2
1

encode(encoding="utf-8")将字符串以一定的编码方式存储为字节串,默认为utf-8编码

a = "Python是最简单的编程语言"
# 将Python字符串编码为字节串
b = a.encode(encoding="utf-8")

decode(encoding="utf-8")以一定的编码方式从字节串解码出字符串,默认为utf-8编码

# 从字节串中解码出字符串
c = b.decode(encoding="utf-8")
print(c)

Python是最简单的编程语言

startswith(prefix[,start[,end]])如果字符串以指定的prefix开始则返回True,否则返回False

a = "Python World"

print(a.startswith("shit"))
# 整个字符串是否以给定字符串开始
print(a.startswith("Pyt"))
# 给定范围是否以给定字符串开始
print(a.startswith("Pyt", 3, 7))

False
True
False

endswith(suffix[,start[,end]])如果字符串以指定的suffix结束返回True,否则返回False

a = "Python World"

print(a.endswith("shit"))
# 整个字符串是否以给定字符串结尾
print(a.endswith("rld"))
# 给定范围是否以给定字符串结尾
print(a.endswith("rld", 3, 7))

False
True
False

find(sub[,start[,end]])返回子字符串subs[start:end]切片内被找到的最小索引,如果找到返回索引,未找到返回-1

a = "Pythoon Woorld"

print(a.find("shit"))
# 从整个字符串寻找
print(a.find("oo"))
# 从给定范围寻找
print(a.find("oo", 5, 15))

-1
4
9

rfind(sub[,start[,end]])返回子字符串sub在字符串内被找到的最大索引,如果找到返回索引,未找到返回-1,rfindfind的区别在于find从前往后查找,rfind从后往前查找

a = "Pythoon Woorld"

print(a.rfind("shit"))
# 从整个字符串寻找
print(a.rfind("oo"))
# 从给定范围寻找
print(a.rfind("oo", 2, 8))

-1
9
4

index(sub[,start[,end]])类似于find,找不到子字符串时将抛出ValueError异常

a = "Pythoon Woorld"

# 从整个字符串寻找
print(a.index("oo"))
# 从给定范围寻找,找不到将抛出异常
print(a.index("oo", 5, 15))

4
9

rindex(sub[,start[,end]])类似于rfind(),但在子字符串sub未找到时会引发ValueError

a = "Pythoon Woorld"

# 从整个字符串寻找,从右向左查找
print(a.rindex("oo"))
# 从给定范围寻找,找不到将抛出异常
print(a.rindex("oo", 2, 8))

9
4
# 如果只是判断子字符串是否在字符串中而不需要知道所在索引,使用in更好
"py" in "python"

True

join(iterable)返回一个由iterable可迭代对象中的字符串拼接而成的字符串

a = ["Welcome", "to", "Python", "World", "!"]

# 用空格拼接每个字符串
print(" ".join(a))
# 用#拼接每个字符串
print("#".join(a))

Welcome to Python World !
Welcome#to#Python#World#!

split(sep, maxsplit=-1)返回一个由字符串内字符串组成的列表,使用sep作为分隔字符串。 如果给出了maxsplit选项,则最多进行maxsplit次拆分

a = "Welcome to Python World"
b = "[email protected]@[email protected]"

# 默认使用空白符进行分割
c = a.split()
print(c)

# 显式给定分隔符
d = b.split("@")
print(d)

# 指定分割次数
e = b.split("@", maxsplit=2)
print(e)

['Welcome', 'to', 'Python', 'World']
['Welcome', 'to', 'Python', 'World']
['Welcome', 'to', '[email protected]']

upper()返回原字符串的大写副本

a = "Welcome to Python World!"
print(a.upper())

WELCOME TO PYTHON WORLD!

lower()返回原字符串的小写副本

a = "Welcome to Python World!"
print(a.lower())

welcome to python world!

lstrip()返回原字符串的副本,移除其中的前导字符

a = " #Hello World"

# 默认移除空白符
print(a.lstrip())
# 显式指定要移除的字符
print(a.lstrip(" #"))

#Hello World
Hello World

rstrip()返回原字符串的副本,移除其中的后缀字符

a = "Hello [email protected] "

# 默认移除空白符
print(a.rstrip())
# 显式指定要移除的字符
print(a.rstrip(" @"))

Hello [email protected]
Hello World

strip()返回原字符串的副本,移除其中的前导和后缀字符

a = " #Hello [email protected] "

# 默认移除空白符
print(a.strip())
# 显式指定要移除的字符
print(a.strip(" #"))
print(a.strip(" @"))
print(a.strip(" #@"))

#Hello [email protected]
Hello [email protected]
#Hello World!
Hello World!

replace(old, new[count])返回字符串的副本,其中出现的所有子字符串old都将被替换为new,如果给出了可选参数count,则只替换前count次出现

a = "Pythoon Woorld Good"

# 替换所有出现
print(a.replace("oo", "xx"))
# 指定替换次数
print(a.replace("oo", "xx", 2))

Pythxxn Wxxrld Gxxd
Pythxxn Wxxrld Good
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39979080/article/details/110366788

智能推荐

ElasticSearch教程——Kibana简单操作ES_elasticsearch kibana_东天里的冬天的博客-程序员秘密

ElasticSearch汇总请查看:ElasticSearch教程——汇总篇运行、打开kibana相关工具要先运行ElasticSearch/usr/elasticsearch/kibana/kibana-6.4.0-linux-x86_64/binsh kibana打开对应的dev Tools获取所有数据GET /_search返回结果{ ...

图像增强-图像锐化_aidem_brown的博客-程序员秘密

图像锐化主要影响图像中的低频分量,不影响图像中的高频分量。图像锐化的主要目的有两个:1.增强图像边缘,使模糊的图像变得更加清晰,颜色变得鲜明突出,图像的质量有所改善,产生更适合人眼观察和识别的图像;2.希望通过锐化处理后,目标物体的边缘鲜明,以便于提取目标的边缘、对图像进行分割、目标区域识别、区域形状提取等,进一步的图像理解与分析奠定基础。图像锐化一般有两种方法:

NGINX安全防护之基于ngx_lua的web应用防火墙_weixin_34138056的博客-程序员秘密

NGINX安全防护ngx_lua_waf安装说明文档作者github地址:https://github.com/loveshell/ngx_lua_waf转自作者说明文档:ngx_lua_waf是我一个基于ngx_lua的web应用防火墙。代码很简单,开发初衷主要是使用简单,高性能和轻量级。现在开源出来.其中包含我们的过滤规则。如果大家有什么建议和想fa,欢迎和我一起...

python从入门到进阶整理书籍推荐_普通网友的博客-程序员秘密

附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全:书单导航页(点击右侧 极客侠栈 即可打开个人博客):极客侠栈①【Java】学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版):②【算法数据结构+acm】从入门到进阶吐血整理书单50+本(珍藏版):③【数据库】从入门到进阶必读18本技术书籍网盘吐血整理网盘(珍藏版):④【Web前端...

“互联网+”时代下的石油石化行业运维管理解决方案研究(中)_chengle2011的博客-程序员秘密

信息化运维的难点与挑战 信息化运维管理当前的难点与挑战主要在: 1)IT规模越来越大,对资源台账的管理成为新的挑战。 2)云计算、大数据、物联网的技术环境下,对资源监控、资源调度、运维支撑、服务交付等运维的各个环节都造成了巨大的影响与冲击。 3)在解...

mysql是用单引号还是用撇号_删除单引号同时保留撇号Python,NLTK_weixin_39999222的博客-程序员秘密

我正试图建立一个诗歌语料库的频率列表。代码读取.txt文件并用数据创建一个.csv。我正在努力的部分是去掉文本中不相关的标点符号。我目前掌握的相关代码是:import nltkraw = open('file_name.txt', 'r').read()output = open('output_filename.csv','w')txt = raw.lower()pattern = r'''(?...

随便推点

VM虚拟机BT5下对usb无线网卡的配置_支持bt5的无线usb网卡_ylqhust的博客-程序员秘密

准备东西1.BT5-GNOME-VM-32 (最好直接使用网上别人配置好的bt5 VM版,不要自己配置,百度搜应该搜得到,有兴趣的可以试试yeslab教主配置的bt5)2.usb无线网卡,我的是wna31003.相应usb网卡的驱动程序,一般网卡商都有提供,百度搜自己的驱动4.ndiswrapper软件准备就这么多。4样东西,绝对都有,没usb网卡要自己买的。本机自带的网卡是无

Vim自动补全神器:YouCompleteMe_me_lawrence的博客-程序员秘密

http://blog.jobbole.com/58978/原文出处: marchtea 的博客   欢迎分享原创到伯乐头条第一次听说这个插件还是在偶然的情况下看到别人的博客,听说了这个插件的大名。本来打算在实训期间来完成安装的,无奈网实在不给力,也就拖到了回家的时候。在开始准备工作的时候就了解到这个插件不是很容易安装,安装的时候果然名不虚传。(关于这方面的内容,请查看另一

GetMessage()和PeekMessage()几个主要区别_einstein991225的博客-程序员秘密

GetMessage()和PeekMessage()几个主要区别: 1。GetMessage()只有在接收到消息后才将控制权转给你的程序,而PeekMessage()无论有没有消息都会将控制权转给你的程序:如果有消息,返回真,没有消息返回假。 2。GetMessage()的主要功能是从消息队列中“取出”消息,消息被取出后,消息队列中就不再由该消息了;而PeekMessage()的主要功能是

吉利博越长期使用eco模式到底会不会更容易产生积碳?_吉利博越一直开着经济好不好_pxr007的博客-程序员秘密

想要搞清楚,咱们先看看什么是ECO模式,ECO模式下,所有前进档将自动提前换高档和滞后降低档,这样可以有效降低发动机的转速,并获得更好的燃油经济性。在P/R/N/D档时,按下ECO开关,开关指示灯点亮,即进入ECO模式。温馨提示:经济模式需要变速箱油温40度以上才能开启的,如发动机处于冷机状态下,需等待发动机热机之后才能进入哦。综上,如果是以省油为目标的话,ECO适用于交通健康的路况,在交通健康的驾驶环境下可以使用燃油得到充分的燃烧,从而达到省油目的。从上面我们可以知道,ECO模式下是工况更柔和

C#中Regex.Replace 方法的使用_c# regex.replace_Shay2016的博客-程序员秘密

Regex.Replace 方法: 在指定的输入字符串内,使用指定的替换字符串替换与指定正则表达式匹配的所有字符串。Regex.Replace 语法:public static string Replace(string input,string pattern,string replacement,RegexOptions options);input

web程序员标准环境之DreamWeaver【推荐】_weixin_34088598的博客-程序员秘密

Adobe Dreamweaver,简称“DW”,中文名称"梦想编织者",是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器,DW是第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页。DreamWeaver的如下特性被本人纳入可推荐的理由...

推荐文章

热门文章

相关标签