字符串,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'