
工作上需要写个 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 May 20, 2020 直接 split 然后 [:5] 再 join 一下? |
2 jdhao May 20, 2020 via Android |
3 lonelinsky May 20, 2020 import re groups = re.match('^(([^,]*,){5})', s).groups() result = groups[0][:-1] if groups else None |
4 cnmllll May 20, 2020 l = s.split(",") 之后想怎么处理都行了 |
5 ashes1122 OP |
6 HashV2 May 20, 2020 result = ",".join(s.split(",")[:5]) 为啥非要正则,有硬性要求吗? |
8 resist May 20, 2020 你这个需求太简单了,建议直接操作字符串,如果是自己玩玩,别人用不着,那就可以使用正则 |
9 HashV2 May 20, 2020 @ashes1122 可以 我是工作一年多了 《流畅的 python 》一定要看 还有标准库 https://docs.python.org/zh-cn/3/library/index.html 加油~~ |
11 L00kback May 20, 2020 需求说的不太清楚,如果是开头到第五个逗号之间的字符串就是 result = ",".join(s.split(",")[:4]) |
12 lonelinsky May 20, 2020 @L00kback 你重新数下看看? Python 的 slice 是前闭后开的。 这个问题还有一个点是如何处理 ",“ 数量小于 5 的情况。另外从性能的角度来考虑 split + join 的方法应该是优于 正则 的。 |
13 Telegram May 20, 2020 同意一楼,能 split 的尽量用这个 |
14 ericls May 21, 2020 via iPhone Regex the problem for all your solutions |
15 soraping May 25, 2020 reg_str = '.*?(\w{5}).*?' list_str = re.findall(reg_str, str11) print(list_str) |