Python 重构字符串的内置方法
本帖最后由 qiuyouzhi 于 2020-4-10 12:06 编辑Python 重构字符串的内置方法
最近闲得没事,突然想起重构字符串的方法了。。
差不多做出了十多个吧,还会继续更新
有一些是我真的没有好思路的,便借鉴了鱼油和网上的思路。
也有一些是功能不完备的(strip),这里放上源代码(顺便做个备份):
class MyStr(str):
def __init__(self,str1):
self.str1 = str1
def Isdigit(self):
for each in self.str1:
try:
int(each)
except:
return False
return True
def Isalpha(self):
temp = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
for each in self.str1:
if each not in temp:return False
return True
def isspace(self):
for each in self.str1:
if self.str1 != ' ':
return False
return True
def Isalnum(self):
temp = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
temp2 = "1234567890"
for each in self.str1:
if not (each not in temp or each not in temp2):
return False
return True
def Islower(self):
for each in self.str1:
if ord(each) < 97 or ord(each) > 122:
return False
return True
def Istitle(self):
if ord(self.str1) < 65 or ord(self.str1) > 90:
return False
else:
for each in self.str1:
if ord(each) < 97 or ord(each) > 122:
return False
else:
return True
def DAS(self):
temp = list(self.str1)
for i in range(len(temp)):
try:
temp.remove(' ')
except ValueError:
break
return ''.join(temp)
# 这里借鉴了网上的思路: https://blog.csdn.net/smfswxj/article/details/79513713
# 原理就是找出字符所在的位置,然后把那个范围里面的字符串(切片)打印出来
def Strip(self, targ = None):
c = 0
nspace = []
for each in self.str1:
c += 1
if each != ' ':
nspace.append(c)
if nspace:
return self.str1-1: nspace[-1]]
return ''
def Count(self, value):
c = 0
for each in self.str1:
if each == value:
c += 1
return c
def Capitalize(self):
return chr(ord(self.str1) - 32) + self.str1
def Split(self, svalue):
res = []
length = len(self.str1)
lchar = len(svalue)
for i in range(length):
index = self.str1.find(svalue)
if index == -1:
res.append(self.str1)
return res
else:
res.append(self.str1[:index])
self.str1 = self.str1
def Title(self):
def Value(str1):
temp = str1.split(' ')
for i in range(len(temp)):
temp = chr(ord(temp) - 32) + temp
yield temp
return ' '.join(Value(self.str1))
# 这里附上普通做法,比较直观
"""res = ''
for each in Value(self.str1):
res += Print(each, end = ' ')
return res[:-1]"""
# 这里附上最简洁的代码
def STitle(self):
return ' '.join((chr(ord(temp)-32)+temp for temp in self.str1.split(' ')))
def Lower(self):
res = list(self.str1)
temp = []
for i in range(len(res)):
if not (ord(res) < 65 or ord(res) > 90):
temp.append(chr(ord(res) + 32))
return ''.join(temp)
def Find(self,target):
i, j = 0,0
length = len(target)
for k in range(len(self.str1)+1):
if self.str1 == target:
return i
if j >= length:
i += 1
j += 1
return -1
# 没想到好的解法,把一位鱼油的代码搬了过来,简单删减了一下
def Print(*values,sep=None,end=''):
if sep is None:
sep=''
return sep.join((str(i) for i in values))+end
def Str(sth):
return MyStr(sth) 124行 # len其实不算内置的,但还是写上吧len是内置的哦 永恒的蓝色梦想 发表于 2020-4-10 11:48
124行len是内置的哦
我的意思是不是字符串内置的
字符串不能:
str1.len() >>> int(' 78')
78
>>> ' 78'.isdigit()
False qiuyouzhi 发表于 2020-4-10 11:53
我的意思是不是字符串内置的
字符串不能:
是str1.__len__(){:10_255:}
页:
[1]