找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3890|回复: 3

[代码与实例] 大家好,这是放string.strip(),,,请大神修改

2

主题

4

帖子

4

积分

贫民

积分
4
PY廉闫 发表于 2016-10-23 01:01:33 | 显示全部楼层 |阅读模式
"""        注释:
这是自己写的代替string模块中strip()函数的新函数。内容很长,
但是,思路不难,里面多是重复的东西,很简单
"""
def dell():
    num = input('请输入您需要的字符串D:')
    num1 = ''
    for i in range(len(num)):           #去除字符中所有空格。这里还有待修改,
        if num[i] == ' ':               #字符中如果有需要有必要的空格,怎么处理。
            continue
        else:
            num1 = num1 + num[i]
    print(num1)
    return num1


def ldell():
    lnum = input('请输入您要检测的字符串L:')
    lnum1 = ''
    lnum2 = ''
    XB = []
    SZ = len(lnum)
    for i in range(SZ):                  #思路:先提取里面的实际字符,并保存原有的下标。
        if lnum[i] == ' ':
            continue                     #利用实际字符下标做列表,用长度-最末下标值*space
        else:
            lnum1 = lnum1 + lnum[i]      #用+连接实际字符和右边的空格。
            XB.append(i)
    lnum2 = lnum1 + (' '*(SZ - XB[-1] -1))
    #print(len(lnum))        
    #print(XB)        
    print(lnum2,len(lnum2))
    return lnum2



def rdell():
    rnum = input('请输入您要检测的字符串R:')
    rnum1 = ''
    rnum2 = ''
    XB = []
    SZ = len(rnum)
    for i in range(SZ):
        if rnum[i] == ' ':
            continue
        else:
            rnum1 = rnum1 + rnum[i]
            XB.append(i)
    rnum2 = (' '*( XB[0] + 1)) + rnum1
    #print(len(lnum))        
    #print(XB)        
    print(rnum2,len(rnum2))
    return rnum2


if __name__ == '__main__':
    prompt = '''
ldell->L
rdell->R
dell ->D
Quit ->Q
Plese to chose!!'''
    choice = {'l':ldell,'r':rdell,'d':dell}
    while True:
        entry = input(prompt).strip()[0].lower()
        if entry == 'q':
            break
        else:
            choice[entry]()  #这是非常好的调用多个函数的方法。把函数名存为字典,通过
                            #键调用函数名。省事,这是思路。


回复

使用道具 举报

2

主题

4

帖子

4

积分

贫民

积分
4
PY廉闫  楼主| 发表于 2016-10-23 22:11:23 | 显示全部楼层
修改后的:
import string

def mylstrip(num):
    while True:
            n = ''
            B = string.whitespace
            
            if len(num) == 0:
                print('请输入内容!')
                break
            for i in range(len(num)):
                if num[i]  not in B:
                    for i in num[i:]:
                        n = n + i
                    break
                else:
                    continue   
            return n

def myrstrip(num):
    while True:
        n = ''
        B = string.whitespace

        if len(num) == 0:
            print('请输入内容!')
            break
        for i in range(-1,-(len(num)),-1):
            if num[i] not in B:
                for i in num[-len(num):i + 1]:
                    n = n + i
                break
            else:
                continue
        return n
def mystrip(num):
    while True:
        n = ''
        n1 = ''
        B = string.whitespace
        
        if len(num) == 0:
            print('请输入内容!')
            break
        for i in range(len(num)):
            if num[i] not in B:
                for i in num[i:]:
                    n = n + i
                break
               
        for i in range(-1,-(len(n)+1),-1):
            if n[i] not in B:
                for j in n[-len(n):(i + 1)]:
                    n1 = n1 + j
                break
            else:
                continue
        return n1

if __name__ == '__main__':
    print('请输入处理的字符!')
    num = input('字符:')
    print('|' + mystrip(num) + '|')
    print('|' + mylstrip(num) + '|')
    print('|' + myrstrip(num) + '|')
回复 支持 反对

使用道具 举报

2

主题

4

帖子

4

积分

贫民

积分
4
PY廉闫  楼主| 发表于 2016-10-23 23:18:04 | 显示全部楼层
再修改::::::::::::::::::::::
import string
whitespace = string.whitespace

def mylstrip(num):
    chs = []
    if len(num) == 0:
        return num
   
    chs.extend(num)
   
    for i in range(len(chs)):
        if chs[0] in whitespace:
            chs.pop(0)
    return ''.join(chs)  

def myrstrip(num):
    chs = []
    if len(num) == 0:
        return num
   
    chs.extend(num)
   
    for i in range(-1,-(len(chs)+1),-1):
        if chs[-1] in whitespace:
            chs.pop(-1)
    return ''.join(chs)  
   
def mystrip(num):
    chs = []
    if len(num) == 0:
        return num
   
    chs.extend(num)
   
    for i in range(len(chs)):
        if chs[0] in whitespace:
            chs.pop(0)
            
    for i in range(-1,-(len(chs)+1),-1):
        if chs[-1] in whitespace:
            chs.pop(-1)
    return ''.join(chs)
   

if __name__ == '__main__':
    print('请输入处理的字符!')
    num = input('字符:')
    print('|' + mystrip(num) + '|')
    print('|' + mylstrip(num) + '|')
    print('|' + myrstrip(num) + '|')
回复 支持 反对

使用道具 举报

0

主题

18

帖子

18

积分

贫民

积分
18
kushao1267 发表于 2016-10-25 18:37:18 | 显示全部楼层
strip的功能不是删除前后空字符吗,用re可能代码量会很短
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表