qq_38585995 2021-10-15 13:07 采纳率: 100%
浏览 92
已结题

python 拓展速记符

【问题描述】下面的描述字符串的方法称为速记符:
1."a-d" : 代表ASCII码在a和b之间的所有字符构成的连续字符串。其中必有a<b。
2."a-b-c" : 代表ASCII码在a和b, 再到c之间的所有字符构成的连续字符串。其中必有a<b<c。
例如:"a-c"代表字符串"abc","a-z"代表字符串"abcdefghhijklmnopqrstuvwxyz","a-c-g"代表字符串"abcdefg",等等。
在字符串开始和结尾处的'-'不做处理。 编写程序,将字符串s1中的速记符号加以扩展形成等价的完整串.允许处理大小写字母和数字,并可以处理诸如a-b-c与a-z0-9与-a-z等情况.
【输入形式】控制台输入一行,即为s1的内容.可以含有空格,制表符,换行符.
【输出形式】控制台输出变换后的s1.
【样例输入】tld-f0-8 A-F
【样例输出】tldef012345678 ABCDEF
【样例说明】输出对输入中的d-f,0-8,A-F进行了扩展.

  • 写回答

1条回答 默认 最新

  • CSDN专家-HGJ 2021-10-15 13:58
    关注

    可用正则re来解,代码如下:

    s = 'tld-f0-8 A-F'
    import re
    res=re.findall('\w{1}-\w{1}',s)
    for m in res:
        st=m.split('-')[0]
        ed = m.split('-')[1]
        if st.isdigit() and ed.isdigit():
            v=''.join(list(map(str,range(int(st),int(ed)+1))))
        else:
            v=''.join([chr(x) for x in range(ord(st),ord(ed)+1)])
        s=s.replace(m,v)
    print(s)    
    #输出:
    tldef012345678 ABCDEF
    
    

    如对你有帮助,请点击我回答右上角【采纳】按钮采纳支持一下。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月23日
  • 已采纳回答 10月15日
  • 创建了问题 10月15日

悬赏问题

  • ¥15 bat批处理,关于数据复制问题
  • ¥50 同步两个不同结果的array中某些属性
  • ¥15 悬赏15远程操控解决问题
  • ¥15 CST复制的模型无法单独修改参数?
  • ¥15 前端页面想做个定时任务,但是使用requestAnimationFrame,setinterval和settimeout都不行
  • ¥15 根据以下文字信息,做EA模型图
  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)