Python - 将正则表达式结果传递给列表
Python - passing regex result to a list
我正在尝试将正则表达式 findall() 函数的结果传递给列表。我用来执行此操作的代码如下:
#iterate DoL, find fobIDs and use to find edgeloop IDs
for key, val in DoL.items():
fobId = val["FaceOuterBound"]
edgeloop_txt = re.findall(r'\n#'+str(fobId)+r'\D*#(\d+).*;', text)
edgeloops = [int(edgeloop) for edgeloop in edgeloop_txt]
print(edgeloops)
for 循环遍历字典并每次更改 fobId
,每次都会生成不同的匹配项。当前的输出如下所示:
[159]
[328]
[37]
[18]
...
但是,我希望它看起来像这样:
[159, 328, 37, 18,....]
我猜这与每次更改变量 edgeloop_txt
的 for 循环有关,但我不确定如何避免这种情况。
现在您正在创建一个新数组,并在每次循环中打印它。尝试这样的事情:
total_array = []
for key, val in DoL.items():
fobId = val["FaceOuterBound"]
edgeloop_txt = re.findall(r'\n#'+str(fobId)+r'\D*#(\d+).*;', text)
total_array += [int(edgeloop) for edgeloop in edgeloop_txt]
print(total_array)
这将循环遍历您的项目,不断添加到 total_array
,并在循环完成时打印整个数组。
我正在尝试将正则表达式 findall() 函数的结果传递给列表。我用来执行此操作的代码如下:
#iterate DoL, find fobIDs and use to find edgeloop IDs
for key, val in DoL.items():
fobId = val["FaceOuterBound"]
edgeloop_txt = re.findall(r'\n#'+str(fobId)+r'\D*#(\d+).*;', text)
edgeloops = [int(edgeloop) for edgeloop in edgeloop_txt]
print(edgeloops)
for 循环遍历字典并每次更改 fobId
,每次都会生成不同的匹配项。当前的输出如下所示:
[159]
[328]
[37]
[18]
...
但是,我希望它看起来像这样:
[159, 328, 37, 18,....]
我猜这与每次更改变量 edgeloop_txt
的 for 循环有关,但我不确定如何避免这种情况。
现在您正在创建一个新数组,并在每次循环中打印它。尝试这样的事情:
total_array = []
for key, val in DoL.items():
fobId = val["FaceOuterBound"]
edgeloop_txt = re.findall(r'\n#'+str(fobId)+r'\D*#(\d+).*;', text)
total_array += [int(edgeloop) for edgeloop in edgeloop_txt]
print(total_array)
这将循环遍历您的项目,不断添加到 total_array
,并在循环完成时打印整个数组。