python3 每两位数字插一个空格,怎么实现 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
angel725
V2EX    Python

python3 每两位数字插一个空格,怎么实现

  •  
  •   angel725 2018-10-07 18:24:43 +08:00 7676 次点击
    这是一个创建于 2572 天前的主题,其中的信息可能已经有所发展或是发生改变。
    010609162526
    变成
    01 06 09 16 25 26

    没想出来该怎么做??
    39 条回复    2018-10-16 18:16:09 +08:00
    lopetver
        1
    lopetver  
       2018-10-07 18:32:09 +08:00
    https://blog.csdn.net/guaguastd/article/details/43525923

    方法应该有很多的,链接使用的是正则分割

    ps.答案是百度出来的
    whoami9894
        2
    whoami9894  
       2018-10-07 18:35:43 +08:00 via Android
    这也需要发贴问吗……
    KIMMG
        3
    KIMMG  
       2018-10-07 18:36:58 +08:00   1
    import re
    number = '010609162526'
    result = " ".join(re.findall(r'.{2}', number))
    print(result)



    ----------------------------------------------
    回复区竟然不支持 makedown
    zhidian
        4
    zhidian  
       2018-10-07 18:58:58 +08:00
    这玩意儿为啥要正则,搜搜 python 怎么 chunk 字符串不好吗?
    Les1ie
        5
    Les1ie  
       2018-10-07 19:02:12 +08:00
    为什么大家都要用正则 ..
    ```
    source = "0123456789"
    result = ''
    for order, ch in enumerate(source):
    result += ch
    if order % 2:
    result += ' '
    print(result)

    ```

    虽然我这样写总感觉不是很优雅
    whoami9894
        6
    whoami9894  
       2018-10-07 19:08:39 +08:00
    >>> f = lambda a : ' '.join([a[i:i+2] for i in range(0, len(a), 2)])
    >>> f("12343463463452523523534634643")
    '12 34 34 63 46 34 52 52 35 23 53 46 34 64 3'
    bankroft
        7
    bankroft  
       2018-10-07 19:09:51 +08:00 via Android
    @Les1ie 因为正则比较快,比较方便
    lcdtyph
        8
    lcdtyph  
       2018-10-07 19:23:15 +08:00 via iPhone
    ' '.join([a+b for a,b in zip(s[::2],s[1::2])])
    奇数个字符就单独处理一下最后一个字符
    或者用 izip_longest
    herozhang
        9
    herozhang  
       2018-10-07 19:24:58 +08:00
    需求不是很明确,是从左向右,还是从右向左?
    zzj0311
        10
    zzj0311  
       2018-10-07 19:38:39 +08:00 via Android
    怎么说遍历插空格也行吧。。
    xxx749
        11
    xxx749  
       2018-10-07 19:48:23 +08:00 via Android
    正则又怎么了?
    mathzhaoliang
        12
    mathzhaoliang  
       2018-10-07 20:37:20 +08:00
    一句话的事情:

    return " ".join(s[i: i+2] for i in range(0, len(s), 2))
    tairan2006
        13
    tairan2006  
       2018-10-07 21:00:35 +08:00 via Android
    这题也太简单了。。
    mathzhaoliang
        14
    mathzhaoliang  
       2018-10-07 21:00:53 +08:00
    @mathzhaoliang 不对,长度奇数没有考虑进去
    weyou
        15
    weyou  
       2018-10-08 00:52:53 +08:00
    @mathzhaoliang slice 对超过范围的 index 也是可以处理的,所以奇数长度是没有问题的
    ltoddy
        16
    ltoddy  
       2018-10-08 06:28:11 +08:00
    @Les1ie source[::2]
    JerryV2
        17
    JerryV2  
       2018-10-08 08:33:28 +08:00
    正则快? 比切片还快?
    mathzhaoliang
        18
    mathzhaoliang  
       2018-10-08 08:35:35 +08:00
    @weyou 是的,谢谢指出。
    des
        19
    des  
       2018-10-08 08:36:29 +08:00 via Android
    @JerryV2 写的快吧,也没人说是跑得快
    annielong
        20
    annielong  
       2018-10-08 08:53:13 +08:00
    关键正则这玩意儿是难者不会会者不难,
    JerryV2
        21
    JerryV2  
       2018-10-08 09:11:23 +08:00
    正则很好,但是请在合适的时候使用它
    这么个简单的东西没必要上正则,不见得写正则会比写切片快,论执行速度,更是不可能比切片快
    说正则快,不过是懒得思考,来个东西,正则能做,就用正则了
    也许说的有点多了,不喜欢看的人就直接跳过好了
    yufpga
        22
    yufpga  
       2018-10-08 09:14:04 +08:00
    s = '010609162526'
    result = [s[i:i+2] for i in range(0, len(s), 2)]
    gowk
        23
    gowk  
       2018-10-08 09:16:35 +08:00 via Android   1
    我觉得吧,不是我打击新人,这种能 google 出来的就不要发帖了,这都解决不了,你也不适合做程序员
    wizardoz
        24
    wizardoz  
       2018-10-08 09:26:33 +08:00
    ' '.join([a+b for a,b in zip(s[0::2], s[1::2])])
    cbiqih
        25
    cbiqih  
       2018-10-08 09:39:14 +08:00
    import re

    number = "123456789"
    result = re.findall("\d{1,2}", number)

    print(result) # ['12', '34', '56', '78', '9']
    imn1
        26
    imn1  
       2018-10-08 09:58:14 +08:00
    如果「没想到优雅写法」还好说
    「没想出来」就很糟糕了,因为实在太多方法了,一个都没想到?
    xpresslink
        27
    xpresslink  
       2018-10-08 10:34:53 +08:00   1
    真正用 Python 的人思维方式应该是这样的:

    >>> import textwrap
    >>> ' '.join(textwrap.wrap(text='010609162526', width=2))
    '01 06 09 16 25 26'
    Les1ie
        28
    Les1ie  
       2018-10-08 10:40:29 +08:00
    @ltoddy 想到了用 s[::2] 然而当时没想到用 join.. 于是退一步写了+=
    laqow
        29
    laqow  
       2018-10-08 11:04:26 +08:00 via Android
    这个是在黑这么简单的东西 python 怎么写性能都低的吧
    a494836960
        30
    a494836960  
       2018-10-08 11:25:22 +08:00
    /(\w{2})(?!\b)/g
    a494836960
        31
    a494836960  
       2018-10-08 11:26:00 +08:00
    js '1123123qweqw'.replace(/(\w{2})(?!\b)/g,'$1 ')
    vimiix
        32
    vimiix  
       2018-10-08 14:21:46 +08:00
    看样子是一组双色球号码~~
    woodensail
        33
    woodensail  
       2018-10-08 14:25:01 +08:00
    @JerryV2 正则本身就不是强调执行速度快,而是开发效率高。
    woodensail
        34
    woodensail  
       2018-10-08 14:27:40 +08:00
    一般的做法是这类需求正则方便做就先正则顶着,然后 profile 后针对热点区域的正则进行优化或换用其他方式实现。
    JCZ2MkKb5S8ZX9pq
        35
    JCZ2MkKb5S8ZX9pq  
       2018-10-08 15:54:43 +08:00
    我觉得切片比较好。不过提供个不同的思路玩玩
    ''.join([''.join(i) for i in zip(s, ['', ' '] * len(s))])
    zjlletian
        36
    zjlletian  
       2018-10-08 23:15:43 +08:00
    @gowk 其实这个看似简单的问题,实际上也有很多学问,虚心点看看别人怎么写的不好么?
    lsj8924
        37
    lsj8924  
       2018-10-09 00:32:53 +08:00
    对不住老铁们了,我是一个正则患者。
    ![]( )
    mingyun
        38
    mingyun  
       2018-10-14 14:10:27 +08:00
    @lsj8924 这个 6
    xiii1991
        39
    xiii1991  
       2018-10-16 18:16:09 +08:00 via iPhone
    我们也可以直接手打着一串东西,然后直接 print ?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5179 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 07:46 PVG 15:46 LAX 00:46 JFK 03:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86