工作上需要写个 python 脚本,取出一串字符种第五个,前面的字符,迫于现学的 python,实在写不出来了,求 v 友帮写一下,谢谢 v 友们了。
字符串如下:
A1234, A1457, A1516, A1518, A1528, A1529, A1530, A1533, iPhone 5s, ME341LL/A, ME342LL/A, ME344LL/A, ME345LL/A, ME347LL/A, ME348LL/A, ME349LL/A, ME432LP/A
![]() | 1 ranleng 2020-05-20 16:58:14 +08:00 ![]() 直接 split 然后 [:5] 再 join 一下? |
![]() | 2 jdhao 2020-05-20 17:07:54 +08:00 via Android ![]() |
3 lonelinsky 2020-05-20 17:09:02 +08:00 ![]() import re groups = re.match('^(([^,]*,){5})', s).groups() result = groups[0][:-1] if groups else None |
4 cnmllll 2020-05-20 17:10:01 +08:00 ![]() l = s.split(",") 之后想怎么处理都行了 |
![]() | 5 ashes1122 OP |
![]() | 6 HashV2 2020-05-20 17:17:04 +08:00 result = ",".join(s.split(",")[:5]) 为啥非要正则,有硬性要求吗? |
![]() | 8 resist 2020-05-20 17:28:33 +08:00 你这个需求太简单了,建议直接操作字符串,如果是自己玩玩,别人用不着,那就可以使用正则 |
![]() | 9 HashV2 2020-05-20 17:30:10 +08:00 @ashes1122 可以 我是工作一年多了 《流畅的 python 》一定要看 还有标准库 https://docs.python.org/zh-cn/3/library/index.html 加油~~ |
![]() | 10 L00kback 2020-05-20 17:45:57 +08:00 @HashV2 老哥,你这是取了前 6 个内容,不对啊,应该是 result=s.split(",")[4].strip() |
![]() | 11 L00kback 2020-05-20 17:47:23 +08:00 需求说的不太清楚,如果是开头到第五个逗号之间的字符串就是 result = ",".join(s.split(",")[:4]) |
12 lonelinsky 2020-05-20 18:04:04 +08:00 @L00kback 你重新数下看看? Python 的 slice 是前闭后开的。 这个问题还有一个点是如何处理 ",“ 数量小于 5 的情况。另外从性能的角度来考虑 split + join 的方法应该是优于 正则 的。 |
![]() | 13 Telegram 2020-05-20 18:28:52 +08:00 同意一楼,能 split 的尽量用这个 |
![]() | 14 ericls 2020-05-21 04:31:58 +08:00 via iPhone Regex the problem for all your solutions |
![]() | 15 soraping 2020-05-25 19:19:21 +08:00 reg_str = '.*?(\w{5}).*?' list_str = re.findall(reg_str, str11) print(list_str) |