2.2.2.2Python-字符串

总目录:https://www.jianshu.com/p/e406a9bc93a9

Python - 子目录:https://www.jianshu.com/p/50b432cb9460

字符串

字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 " )来创建字符串。

创建字符串很简单,只要为变量分配一个值即可。

var1=‘hello,world!’

var2=“I am hx”

同时有一个小技巧,如果字符串内自带单引号或者双引号,使用另一个符号反义便可,也可以使用\来转义。

var3=“I‘m hx”

var4=‘它是一个“乐天派”’


字符串特殊字符

\(在行尾时)             续行符

\\                             反斜杠符号

\'                             单引号

\"                             双引号

\a                            响铃

\b                            退格(Backspace)

\e                            转义(3.7后的手册没有这个了)

\000                        空

\n                             换行

\v                             纵向制表符

\t                              横向制表符

\r                               回车

\f                               换页

\0yy                          八进制数,yy代表的字符,例如:\012代表换行

\xyy                          十六进制数,yy代表的字符,例如:\x0a代表换行

\other                       其它的字符以普通格式输出


字符串运算符

实例变量a值为字符串 "Hello",b变量值为 "Python":


+:字符串连接

例子:a + b                           

输出结果: HelloPython


*:重复输出字符串

例子:a*2                       

输出结果:HelloHello


[]:通过索引获取字符串中字符

例子:a[1]   

输出结果: e


[ : ]:截取字符串中的一部分,遵循左闭右开原则,str[0,2] 是不包含第 3 个字符的。

例子:a[1:4]

输出结果: ell


in:成员运算符 - 如果字符串中包含给定的字符返回

例子:True'H' in a 

输出结果:True


not in:成员运算符 - 如果字符串中不包含给定的字符返回

例子:True'M' not in a 

输出结果:True


r/R:原始字符串 -所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。

例子:print(r'\n')     print(R'\n')

输出结果:\n    \n


运算符实例

a="Hello"

b="Python" 


print("a + b 输出结果:",a+b)

a+b输出结果:HelloPython


print("a * 2 输出结果:",a*2)

a*2输出结果:HelloHello


print("a[1] 输出结果:",a[1])

a[1]输出结果:e


print("a[1:4] 输出结果:",a[1:4])

a[1:4]输出结果:ell


if("H"ina):

    print("H 在变量 a 中") 

else: 

    print("H 不在变量 a 中")

H在变量a中


if("M"notina):

    print("M 不在变量 a 中")

else:

    print("M 在变量 a 中")

M不在变量a中


print(r'\n')

\n


print(R'\n')

\n


字符串格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

print("我叫 %s 今年 %d 岁!"%('小明',10))

我叫小明今年10岁!


print('''

    name:%s,

    age:%d

'''%("张三",20))  

name:张三,

age:20

python字符串格式化符号:

      %c         格式化字符及其ASCII码    例如:\x01

      %s         格式化字符串                    例如:"字符串"

      %d         格式化整数                        例如:10

      %f         格式化浮点数字,可指定小数点后的精度   例如:10.10  

      %u         格式化无符号十进制整数

      %o         格式化八进制数

      %x         格式化十六进制数

      %X         格式化十六进制数(大写)

      %e         用科学计数法格式化浮点数

      %E         作用同%e,用科学计数法格式化浮点数

      %g         %f和%e的简写

      %G         %f 和 %E 的简写

      %p         用十六进制数格式化变量的地址(指针)(被废除)

    3.8越来越不支持这样printf输出风格一样的字符串格式化。

    而是改用format函数与 rjust()函数。

注:%d与%u都是十进制整数,区分在于有符号还是无符号,无符号类型可以存放的正数范围比有符号整型中的范围大一倍。因为Python全面采用有符号整型,所以%u已经过时了。

有符号能表示大小,也能表示正负,无符号只能表示大小。

格式化八进制与十六进制数,和   int(10,8)和int(10,16)一样。

#常用占位符

# %s %d %f %c

print("百分号s用来替换:%s"%("字符串"))

print("百分号d用来替换:%d"%(100))

print("百分号f用来替换:%f"%(10.10))

print("百分号c用来替换:%c"%(65))

百分号s用来替换:字符串

百分号d用来替换:100

百分号f用来替换:10.100000    #注意小数点后面有6位

百分号c用来替换:A


#进制占位符

#%u  %o  %x  %X

print("百分号u用来替换:%u"%(10))

print("百分号o用来替换:%o"%(32))

print("百分号x用来替换:%x"%(10))

print("百分号X用来替换:%X"%(10))

#传入一个十进制数,转换为八进制或者16进制

百分号u用来替换:10

百分号o用来替换:40

百分号x用来替换:a

百分号X用来替换:A


#其他不常用的占位符

#%e %E %g %G

print("百分号e用来替换:%e"%(100000000000000000000000000000))

print("百分号E用来替换:%E"%(100000000000000000000000000000))

print("百分号g用来替换:%g"%(100000000000000000000000000000))

print("百分号G用来替换:%G"%(100000000000000000000000000000)) 

print("百分号g用来替换:%g"%(10.10))

print("百分号G用来替换:%G"%(10.10))

百分号e用来替换:1.000000e29  

百分号E用来替换:1.000000E29  

百分号g用来替换:1e29   #去掉小数点后的无效0

百分号G用来替换:1E29  

百分号g用来替换:10.1   #使用g后,对他进行简写,就只有有效位了。

百分号G用来替换:10.1 


格式化操作符辅助指令

m.n.                m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

-                      用做左对齐

+                      在正数前面显示加号( + )

0                      右对齐时,在前面填充0而不是空格

#                      在八进制数前面显示('0o')

                        在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')

%                    当字符串中存在格式化标志时,需要用 %%表示一个百分号

常用的例子:

m.n.

print("%.2f"%(3.333))

输出:3.33


-  +

第一个输出是对照组

print("%30.2f"%(45))

输出:                       45.00


print("%-30.2f"%(45))

输出:45.00      输出左对齐,对照上一条  默认为右输出


print("%+30.2f"%(45))

输出:                        +45.00  这个会显示+号  ,如果是一个负数  就是-号。


0

print("%030.2f"%(45))

输出: 000000000000000000000000045.00


#不常用辅助符

# # % 

print("%#o"%(10))

print("%#x"%(10))

print("%#X"%(10))

print('aaa %s %%'%('bbb'))

0o12 

0xa 

0XA 

aaa bbb %  


format方法

format方法分为:位置映射(匿名格式化),关键字映射(有名格式化),元素访问

位置映射

print("{}:{}".format('192.168.0.100',8888))

192.168.0.100:8888

关键字映射

print("{server}{1}:{0}".format(8888,'192.168.1.100',server='Web Server Info :'))

Web Server Info :192.168.1.100:8888

元素访问

print("{0[0]}.{0[1]}".format(('baidu','com')))

baidu.com


辅助格式化有:填充对齐,精度设置

填充对齐

print("{0}*{1}={2:0>2}".format(3,2,2*3))

3*2=06


精度设置

print("{:.3f}".format(2.1415))

2.142


rjust()

print("123".rjust(4))

 123

str.rjust(),他会生成一个指定大小的容器按照右对齐的方式存放一个字符串,你可以理解成创建了一个单元格来存放字符串。


String的内置方法

st='hello python '

st2='hello\tpython '

st3='hello python {name} is {age}'


统计元素个数

print(st.count('l'))

输出:2    st字符串中有  2  个l


居中 空格用#号代替

print(st.center(50,'#'))

输出:   ##################hello python ###################


判断是否以某个内容开头

print(st.startswith('he'))

输出:True


查找到第一个元素,并将索引值返回 找不到返回-1

print(st.find('t'))

输出:8


格式化输出的另一种方式 待定:?:{}

print(st3.format(name='hx',age=20))

输出:hello python hx is 20


格式化输出的另一种方式 同上

print(st3.format_map({'name':'hx','age':21}))

输出: hello python hx is 21


检测字符串是否全小写

print('Abc'.islower())

输出: False


检测字符串是否全大写

print('ABC'.isupper())

输出:True


字符串中大写转换为小写

print('My tLtle'.lower())

输出:my tltle


字符串中小写转换成大写

print('My tLtle'.upper())

输出:MY TLTLE


去除字符串前后的特殊字符

print('\tMy tLtle\n'.strip())

输出: My tLtle


替换字符串中的指定内容

print('My title title'.replace('itle','lesson',1))

输出:My tlesson title


以指定字符为分割符,将字符串分割成列表,1代表只在第一个字符处分割

print('My title title'.split('i',1))

输出:['My t', 'tle title']


---------------------------------------以上为常用函数------------------------------------------


首字母大写

print(st.capitalize())

输出:Hello python


判断是否以某个内容结尾

print(st.endswith('tty3'))

输出:False


\t处代表多少空格

print(st2.expandtabs(tabsize=20))

输出:hello              python


查找到第一个元素,并将索引值返回 找不到报错

print(st.index('t'))

输出:8  因为他会报错,所以不适用他


只能是字符或者数字,或者两者的结合,不可以有特殊字符

print('asd'.isalnum())

输出:True


判断是否为十进制

print('12632178'.isdecimal())

输出:True


检测字符串是否只由数字组成

print('1269999.uuuu'.isnumeric())

输出:False


检测是否合法变量 True为合法 False为非法

print('abc'. isidentifier() )

输出:True


检测字符串是否全是空格

print(' e'.isspace())

print('  '.isspace())

输出:False

             True  第二个全是空格  输出True


检测字符串中单词是否开头大写

print('My title'.istitle())

输出:False


字符串中大小写转换

print('My tLtle'.swapcase())

输出:mY TlTLE  大写变成小写,小写变成大写


生成一个以指定字符串开头的指定长度的字符串,缺少部分用‘*’在后补充

print('My tLtle'.ljust(50,'*'))

输出:My tLtle******************************************


生成一个以指定字符串开头的指定长度的字符串,缺少部分用‘*’在前补充

print('My tLtle'.rjust(50,'*'))

输出:******************************************My tLtle


去除字符串前的特殊字符

print('\tMy tLtle\n'.lstrip())

输出: My tLtle

#          这里是后面的换行符产生的空行


 去除字符串后的特殊字符

print('\tMy tLtle\n'.rstrip())

输出:    My tLtle


查找到最后一个元素,并将索引值返回 找不到返回-1

print('My title title'.rfind('t'))

输出:11


以首单词格式修改后面单词的格式

print('My title title'.title())

输出:My Title Title  my是首单词  他是开头大写  所以之后也是开头大写

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,100评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,862评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,993评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,309评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,303评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,421评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,830评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,501评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,689评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,506评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,564评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,286评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,826评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,875评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,114评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,705评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,269评论 2 341