工作上需要写个 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 1
直接 split 然后 [:5] 再 join 一下?
|
2
jdhao 2020-05-20 17:07:54 +08:00 via Android 1
😂
|
3
lonelinsky 2020-05-20 17:09:02 +08:00 1
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 1
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) |