![]() | 1 lopetver 2018-10-07 18:32:09 +08:00 |
![]() | 2 whoami9894 2018-10-07 18:35:43 +08:00 via Android 这也需要发贴问吗…… |
![]() | 3 KIMMG 2018-10-07 18:36:58 +08:00 ![]() import re number = '010609162526' result = " ".join(re.findall(r'.{2}', number)) print(result) ---------------------------------------------- 回复区竟然不支持 makedown |
![]() | 4 zhidian 2018-10-07 18:58:58 +08:00 这玩意儿为啥要正则,搜搜 python 怎么 chunk 字符串不好吗? |
![]() | 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) ``` 虽然我这样写总感觉不是很优雅 |
![]() | 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' |
![]() | 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 |
9 herozhang 2018-10-07 19:24:58 +08:00 需求不是很明确,是从左向右,还是从右向左? |
10 zzj0311 2018-10-07 19:38:39 +08:00 via Android 怎么说遍历插空格也行吧。。 |
![]() | 11 xxx749 2018-10-07 19:48:23 +08:00 via Android 正则又怎么了? |
![]() | 12 mathzhaoliang 2018-10-07 20:37:20 +08:00 一句话的事情: return " ".join(s[i: i+2] for i in range(0, len(s), 2)) |
13 tairan2006 2018-10-07 21:00:35 +08:00 via Android 这题也太简单了。。 |
![]() | 14 mathzhaoliang 2018-10-07 21:00:53 +08:00 @mathzhaoliang 不对,长度奇数没有考虑进去 |
15 weyou 2018-10-08 00:52:53 +08:00 @mathzhaoliang slice 对超过范围的 index 也是可以处理的,所以奇数长度是没有问题的 |
17 JerryV2 2018-10-08 08:33:28 +08:00 正则快? 比切片还快? |
![]() | 18 mathzhaoliang 2018-10-08 08:35:35 +08:00 @weyou 是的,谢谢指出。 |
20 annielong 2018-10-08 08:53:13 +08:00 关键正则这玩意儿是难者不会会者不难, |
21 JerryV2 2018-10-08 09:11:23 +08:00 正则很好,但是请在合适的时候使用它 这么个简单的东西没必要上正则,不见得写正则会比写切片快,论执行速度,更是不可能比切片快 说正则快,不过是懒得思考,来个东西,正则能做,就用正则了 也许说的有点多了,不喜欢看的人就直接跳过好了 |
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)] |
![]() | 23 gowk 2018-10-08 09:16:35 +08:00 via Android ![]() 我觉得吧,不是我打击新人,这种能 google 出来的就不要发帖了,这都解决不了,你也不适合做程序员 |
![]() | 24 wizardoz 2018-10-08 09:26:33 +08:00 ' '.join([a+b for a,b in zip(s[0::2], s[1::2])]) |
![]() | 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'] |
![]() | 26 imn1 2018-10-08 09:58:14 +08:00 如果「没想到优雅写法」还好说 「没想出来」就很糟糕了,因为实在太多方法了,一个都没想到? |
27 xpresslink 2018-10-08 10:34:53 +08:00 ![]() 真正用 Python 的人思维方式应该是这样的: >>> import textwrap >>> ' '.join(textwrap.wrap(text='010609162526', width=2)) '01 06 09 16 25 26' |
![]() | 29 laqow 2018-10-08 11:04:26 +08:00 via Android 这个是在黑这么简单的东西 python 怎么写性能都低的吧 |
30 a494836960 2018-10-08 11:25:22 +08:00 /(\w{2})(?!\b)/g |
31 a494836960 2018-10-08 11:26:00 +08:00 js '1123123qweqw'.replace(/(\w{2})(?!\b)/g,'$1 ') |
![]() | 32 vimiix 2018-10-08 14:21:46 +08:00 看样子是一组双色球号码~~ |
![]() | 33 woodensail 2018-10-08 14:25:01 +08:00 @JerryV2 正则本身就不是强调执行速度快,而是开发效率高。 |
![]() | 34 woodensail 2018-10-08 14:27:40 +08:00 一般的做法是这类需求正则方便做就先正则顶着,然后 profile 后针对热点区域的正则进行优化或换用其他方式实现。 |
![]() | 35 JCZ2MkKb5S8ZX9pq 2018-10-08 15:54:43 +08:00 我觉得切片比较好。不过提供个不同的思路玩玩 ''.join([''.join(i) for i in zip(s, ['', ' '] * len(s))]) |
37 lsj8924 2018-10-09 00:32:53 +08:00 对不住老铁们了,我是一个正则患者。  |
39 xiii1991 2018-10-16 18:16:09 +08:00 via iPhone 我们也可以直接手打着一串东西,然后直接 print ? |