Python基础04_str_方法
所有的练习都是用的python3 ,还没试过python2
############## 必须要会的7个基本方法 ##############
join
split
find
strip
upper / lower
replace
其中 join split strip 真的是太常用了。
#!/usr/bin/env python # coding:utf-8 # 关于方法中的参数,必要参数和可选参数的比喻太生动了。 # 几个字符串方法 test = "alexamdexr" a = test.casefold() #更牛逼的小写,支持多国语言 print(a) b = test.lower() #常用的小写,支持英语 print(b) c = test.capitalize() #首字母大写 print(c) d = test.center(20,"$") # 占位多个,并且把自己放中间,其余位置补充字符,默认为空格 print(d) d2 = test.ljust(20,"!") # 把自己放左边 d3 = test.rjust(20,"#") # 把自己放右边 print(d2) print(d3) e = test.count('ex') #寻找子序列出现的次数,也可以指定起始 print(e) f = test.find('am',3,6) # 寻找子序列,返回下标,找不到返回 -1 print("find的结果:",f) # 字符串函数中的参数,都常是>= 和 < 的。如test.find("am", 3, 5) 的位置就是3和4,小于5 g = test.startswith("e") #是否以 * 开头 print(g) h = test.endswith("ex") # 是否以 * 结尾 print(h)
#!/usr/bin/env python # coding:utf-8 tst = "thisisasb 11 22" # expandtabs()是将字符串里面的tab制表符换成空格,如果没有指定tabsize参数,默认一个tab转化成8个空格。 m = tst.expandtabs(1) print(m) test ="username: admin\tpassword: 123\temail: abcde@163.com\nusername: user\tpassword: 1234\temail: abcdefg@sohu.com\nusername: tomashe\tpassword: 123456\temail: abc@sohu.com\n" v = test.expandtabs(20) print(v) # 输出了整齐的列表形式。
字符串的函数很多,挑了一些可能会用到的做了练习。 还是pycharm的 按住 ctrl 点击 str 可以很方便地找到解释。
#!/usr/bin/env python # coding:utf-8 # format 将一个字符串中的占位符替换为指定的值 test = 'i am {name}, age {a}' print(test) a = test.format(name="Tom",a=32) print(a) test2 = 'you are {0}, age {1}' b = test2.format("SB",12) print(b) c = test.format_map({"name":"Jerry", "a":43}) print(c) # index找不到直接报错 建议使用find() # d = test.index("d") # isalnum 判断字符串是否只有字母和数字 test3 = "abc_123" e = test3.isalnum() print(e) # 汉字也算alpha tt = "abcde中国" e2 =tt.isalpha() print("是否字母",e2) # 练习 str 中的其它方法 # strip()除去两边空格; lstrip()去左边的, rstrip()去掉右边的; 默认\r\t\n也能去掉 te = " abCd efder " f = te.strip() print(f) te2 = "abcdefab" f2 = te2.lstrip("ab") # 也可以指定去除字符串 print("lstrip: ",f2) f3 = te2.rstrip("ab") print(f3) g = te.swapcase() # 大小写全换 print(g) h = te.replace("d","z") #字符串替换 print(h) j = test.title() # 每个单词首字母大写 print(j) k = j.istitle() # 是否title print(k) tst = "2345③" v1 = tst.isdecimal() #带圈的不算 v2 = tst.isdigit() # 带圈的数字也算 v22 = tst.isnumeric() # 带圈的,中文的都能识别 print("是否数字:",v1, v2,v22) v3 = "1234.45" # 小数点就不是数字了。 v4 = v3.isdigit() v5 = v3.isdecimal() v55 = v3.isnumeric() print(v4,v5,v55)
#!/usr/bin/env python # coding:utf-8 import keyword print(keyword.iskeyword("def")) # 标识符 字母 数字 下划线 t = "_def32 " v = t.isidentifier() #是否标识符, 空格不是 print("isidentifile",v) v2 = t.isprintable() # 是否有不可见字符,如\n \t print(v2) t2 = " " v3 = t2.isspace() # 是否空格 \t\n\r 也算. 空字符串不算。 print("isspace ",v3) # ***** 很重要的一个函数 join 要劳记 test = "你是风儿我是沙。 You are wind i am dust. 123456" res = "_".join(test) print(res) # 结果连空格都被join了。 a1 = "abcdefghijklmnopqrst" m1 = str.maketrans("aeio", "2345") # 先建立对应关系 a2 = a1.translate(m1) # 将字符串中找到替换成对应的。 print(a2) b1 = "tom;jerry;karl;hand" c1 = b1.partition(";") # 以指定的字符串为分隔,从左边找到的第一个为准,将其分为三段,分隔符也作为一个元素 print(c1) c2 = b1.rpartition(";") # 从右边找到的第一个为准. print(c2) c3 = b1.split(";") # 以指定字符串为分隔,完全分割。但是不保留分隔符本身。 print(c3) c4 = b1.split(";",1) #指定最多分一个。 print(c4) # 以后会有一个表达式版的计算器。 # 后续学到正则表达式时,将包含有以上2个函数的功能。 d1 = "abcde\nfghikj\ndaemon" e1 = d1.splitlines() # 以换行符来分割, 如果加参数True ,则保留换行符 print(e1) # 方法太多,只能大概有个印象,不可能背会。 所以要使用IDE查看定义。
补充一下第 7 种: replace
#!/usr/bin/env python # coding:utf-8 name ="tom & jerry jessies" s = name.replace("j","T",1) # 第3个参数是指定替换几个。不指定则全部替换 print(s)
继续补充:
#!/usr/bin/env python # coding:utf-8 # 通过下标索引获取字符串中的某个字符 # 1. 索引 test = "alexerdor" a = test[0] print(a) # 2. 切片 b = test[0:2] # 小于2, 不包括2 print(b) c = test[0:-1] # 负1的意思是到最后减1 print(c) # 3. 长度 test2 = "中国人" d = len(test2) # python3中返回3, 2.7中则返回9 (因为utf8的字节长度是3 ) print(d) # 4. 循环输出 txt = "大数据分析挖掘与开发技术" # # n = 0 # while n < len(txt): # v = txt[n] # print(v) # n += 1 # For循环 for t in txt: # 简单的方法,轻松地得到和上面循环输出方法一样的结果。 print(t) ######################## 记住以上4 种,以及前面必须的 6 种普通方法。 # for dict bdict = {} bdict['aaa'] = 1 bdict['bbb'] = 2 bdict['ccc'] = 3 bdict['ddd'] = 4 bdict['eee'] = 5 # python2.7中,字典只能输出下标, 并且不是按顺序输出: 针对key的hash取模 for v in bdict: print (v) # 改动后 for k, v in bdict.items(): # print(k + " ===> " + str(v)) print("{}===>{}".format(k,v)) #使用format方法输出。
关于字符串:一旦创建后在内存中是不可修改的。而我们操作时的修改拼接等操作,会重新创建一个新的字符串。
继续补充: range
#!/usr/bin/env python # coding:utf-8 # 1. replace name ="tom & jerry jessies" s = name.replace("j","T",1) # 第3个参数是指定替换几个。不指定则全部替换 print(s) # 2. range 帮助创建连续数字,通过步长来指定不连续 test = range(0,100,9) # 第3个参数是步长 for e in test: print(e) ## 练习: 将文本对应的索引打印出来。 str_name = "分布式文件系统HDFS" l = len(str_name) rg = range(0,l) for a in rg: print(a, str_name[a]) # 老师的讲解 简写 txt = input(">>>") for item in range(0,len(txt)): print(item, txt[item])
发现一个PDF版的教程,写得不错,简洁明了。 点击下方链接下载: