Python基础-字符串

字符串,string,记得面试的时候面试官问了一句string,我一下没反应过来,真想找个地缝钻进去。。。

s='string' or ''string''  两者没差,输出都是'string'。

如果内容里包括 ' 或者 '' 咋办?凉拌么。。。在前面加个反斜杠 \ 就好啦, 专业一点就是转义字符\了。

s=' i\'m a girl has no name'  or '\'' a girl has no name\'' ' 忽略英语语法错误好吗。。。

敲黑板!!!注意直接执行s和print(s)是有区别的!

s=' i\'m a girl has no name' 

执行s,输出 'i'm a girl has no name'

print(s),输出 i'm a girl has no name

区别很小是吧?往下看。。

想用多行展示一个字符串可咋办呢?愁死我了,有两种方法啊

丑八怪方法:\n

s='I \nLOVE \nYOU'

这时候,如果直接s,得到 'I \nLOVE \nYOU',很sb是吧。。。

print,才有

I

LOVE

YOU

如果我就想sb一下呢,就想把\n等等等等print出来呢,用r'\n等等等等'

简单说来,直接执行是给python这丫看的,而print出来的东西才是给人看的!

懂了吗!!!记住了吗!!!

优雅方法:'''asfgv回车vrgqe回车rgrehwrg回车'''

s='''I

LOVE

YOU'''

效果如上。。

写了这么多感觉都是很sb的东西。。。有点坚持不下去了。。。算了。。。谁能知道面试官是不是sb呢

继续

字符串呢还可以相加呢,了不起吧哈哈哈哈

s='i\'m'

b='a piece of shit'

s+b

'i'ma piece of shit'   忘了在m后面加空格了。。。

还有一种类似的操作,就是用('s1''s2''s3')

sb=('i\'m''a piece of shit')

sb     

'i'ma piece of shit' 

不同的是()还可以用来连接多行字符串

sb=('i\'m'

'a piece of shit')

这样的操作也能用\来完成

sb='i\'m'\

'a piece of shit'

sb    

'i'ma piece of shit' 

加法可以,乘法自然也可以,不过只能和数字相乘了

b*3

'a piece of shita piece of shita piece of shit' 还是忘了加空格。。

等等,我知道你要问什么,抱歉,string只能做加法和数乘。。

字符串也可以索引

s='1 2 3 4 5'

s[0]  '1'

s[1] '  '    对,你没瞎,就是个空格, 因为len(s)=9,注意5对应的是s[8]

s[-1]  '5'

s[0:8]  '1 2 3 4 ' 嗯,索引不算右边的数

s[:] '1 2 3 4 5'

只取奇数位

s[::2] '12345'

然后呢,字符串还可以按照某个特征(str or none)进行分割,用到s.split(特征),默认按空格分割,结果输出一个列表,不改变s

b=s.split()

b ['1','2','3','4','5']

b=s.split('2')

b ['1','3 4 5']

能分就能合啊,操作是t.join(b), t是字符串,表示以t为连接符把b连接起来,b是一个string或者str-sequence,结果是个str,不改变b

t=' '

b=['1','2','3','4','5']

t.join(b)

'1 2 3 4 5'

如果b='1 2 3 4 5'

t=','

t.join(b) 

'1, ,2, ,3, ,4, ,5'

嗯,写到这里,果然好烦啊,但还要坚持,好气哦。。

接着是替换,操作是s.replace(part1,part2)就是把s里面的part1换成part2,返回替换后的字符串

s='i\'m a piece of shit'
s.replace('shit','sheet')

"i'm a piece of sheet"

然后还有个转化字符串里面字母大小写的骚操作,分别是s.upper()和s.lower()

"Hello world".upper()

'HELLO WORLD'

'HELLO worLD'.lower()

'hello world'
 简直easy。。 
 

还有去除字符串两端或者开头或者结尾的空格的操作,咋这么无聊呢。。直接复制粘贴了

s.strip()返回一个将s两端的多余空格除去的新字符串。

s.lstrip()返回一个将s开头的多余空格除去的新字符串。

s.rstrip()返回一个将s结尾的多余空格除去的新字符串。

接下来就是把数据类型强制转化成字符串了,有两种方法

str(内容)方法是给人看的

str(1.1+2.2)

3.3

repr(内容)方法给python看,结果一律在内容外面在加一对' 或 '',妈的语言好苍白,看例子吧

repr(1.1+2.2)

'3.3000000000000003'
 
 

repr('hello world')

'' 'hello world' ''

str('hello world')

'hello world'

震惊!!!repr居然活生生的把。。。。。

可爱的hello world字符串变成了'hello world',也就是说repr('hello world')[0]是'' ' ''了!果然不是人能理解的。。。

然后呢,数字可以按某进制转化成字符串,

hex(255)   //16进制

'0xff' //0x表示16进制
 oct(255)   //8进制 
 

'0377' //0表示8进制

bin(255)  //2进制

'0b11111111' //0b表示2进制

字符串可以按某进制转化回去

int('ff', 16)

int('377',8)

int('11111111',2)

或者默认按10进制转化

int('255')

结果都是10进制的255

终于到最后一点了,我tm怎么就突然想写个总结了呢,哭了

格!式!化!字!符!串!

格式为:'格式'.formate(参数),参数会按照规定的格式排列,结果是一个具有格式的以参数为内容的字符串。

'{color} {1} {x} {0}'.format(10, 'foo', x = 1.5, color='blue')

'blue foo 1.5 10'

总之呢可以赋值可以传位置,结果的顺序就按格式的排列来了

当然也可以沿用C里面%那一套来格式化

s = "some numbers:"
x = 1.34
y = 2
# 用百分号隔开,括号括起来
t = "%s %f, %d" % (s, x, y)  //%s字符串,%f浮点数,%d整数。。。

'some numbers: 1.340000, 2'
 
 
 
 


猜你喜欢

转载自blog.csdn.net/keyboardwarrior/article/details/78998073