「已注销」 2021-12-07 11:28 采纳率: 100%
浏览 61
已结题

python如何分割字符串

s='15300120001Will SmithCOMP110033.01A\n15300230125G. WashingtonCOMP110032.02B-\n14300390256Bill GatesCOMP110021.01C+\n'
请问如何分割s得到如图所示的的效果呢?
摸索了大半天了都不对劲。

img

  • 写回答

3条回答 默认 最新

  • 菜猫小六 2021-12-07 12:15
    关注
    
    s='15300120001Will SmithCOMP110033.01A\n15300230125G. WashingtonCOMP110032.02B-\n14300390256Bill GatesCOMP110021.01C+\n'
    for text in s.split('\n'):
        if text:
            for value in re.findall("(\d{11})(.*)(COMP\d{6}\.\d{2})([ABC][+-]?)",text):
                print value
    

    打印的话可以

    import re
    
    s = '15300120001Will SmithCOMP110033.01A\n15300230125G. WashingtonCOMP110032.02B-\n14300390256Bill GatesCOMP110021.01C+\n'
    for text in s.split('\n'):
        if text:
            for value in re.findall("(\d{11})(.*)(COMP\d{6}\.\d{2})([ABC][+-]?)", text):
                print '\t'.join(value)
    

    有需要排版对其可以使用format,

    import re
    
    s = '15300120001Will SmithCOMP110033.01A\n15300230125G. WashingtonCOMP110032.02B-\n14300390256Bill GatesCOMP110021.01C+\n'
    for text in s.split('\n'):
        if text:
            for value in re.findall("(\d{11})(.*)(COMP\d{6}\.\d{2})([ABC][+-]?)", text):
                print "{:<15}{:^20}{:<10}\t{:<10}".format(value[0],value[1],value[2],value[3])
    

    输出的那行的数字可以稍微调整一下,输出大概是

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(2条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度