正则提取又蒙圈了!
2021-03-09 22:50:13 +08:00
maloneleo88
[18,3,5,7,5,2,3,3,14,14],[19,3,7,3,8,5,0,1,15,12],[20,3,7,3,9,1,1,2,19,7],[24,4,4,8,4,5,1,2,9,19],[25,2,5,7,4,6,1,3,13,15],[26,1,6,10,2,4,4,1,13,15],[27,6,4,2,3,5,4,4,13,15],[28,2,1,12,7,2,2,1,11,16],[29,5,6,9,5,1,1,1,13,15],[30,2,6,8,4,1,2,4,15,12],[31,0,7,8,5,3,1,3,14,13],[33,1,6,8,5,3,1,3,14,13],[35,3,3,8,6,3,3,2,13,15],[46,4,9,7,3,2,2,1,14,14],[51,0,11,6,8,1,2,0,21,7],[52,3,7,6,6,3,2,1,15,13],[56,1,7,3,6,2,3,5,19,8],[59,1,3,8,9,4,1,2,14,14],[60,4,6,5,7,2,1,2,14,13],[62,2,4,4,10,5,1,1,15,12]
怎么提取其中一个列表啊? re.findall(r'\[18,(\d+)\],',list) 为什么提取不到呢? 只能提取全部数字。 比如提取第一个列表,以 18 这个元素定位应该怎么写哇?
11 条回复
VTEX9527
2021-03-09 22:55:51 +08:00
r'\[18(,\d+){9}\],'
maloneleo88
2021-03-09 23:01:56 +08:00
maloneleo88
2021-03-09 23:07:51 +08:00
jeffwcx
2021-03-09 23:23:47 +08:00
/\[18(,?\d+){9}\]/ 这样不就好了吗
ETiV
2021-03-09 23:32:38 +08:00
\[18,[,0-9]+\]
虽然……不知道你到底想干啥……
jeffwcx
2021-03-09 23:41:05 +08:00
/\[18(,\d+){9}\]/g 这个加 global 也是可以的
VTEX9527
2021-03-09 23:42:09 +08:00
@
maloneleo88 楼上正则都是没有问题的,主要应该是 re 模块的实现不一样。python 中 re.findall()是匹配分组的,您要字符串中第一个数组。我暂时能想到的是换一个写法。
str_regex = r'\[18(,\d+){9}\]'
list_value = re.finditer(str_regex, input, flags=re.I)
for match in list_value:
first_array_str = match.group()
print(first_array_str)
然后,自行处理 first_array_str
webshe11
2021-03-09 23:43:21 +08:00
不知道楼主想干啥,有种 X-Y Problem 的气息
如果不用非用正则表达式,左右补上 '[' ']' 然后 json.loads() 比较好处理
Kasumi20
2021-03-09 23:46:13 +08:00
/\[18.*?\]/
ETiV
2021-03-10 02:39:50 +08:00
手动捂脸🤦♂️
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/760145
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.