使用正则表达式拆分列表
splitting list with regex
我正在 Marathon 中编写测试并试图只获取 JTable 的一列。
它的内容如下所示:
[[NEEDED_ITEM_1, java.awt.Color[r=253,g=255,b=196], [ATTACHMENT], [all
levels], false, olololo@56fc12a9], [NEEDED_ITEM_2,
java.awt.Color[r=179,g=237,b=181], [ATTACHMENT], [2nd level, 3rd],
true, blablabla@cb331d80], [NEEDED_ITEM_3,
java.awt.Color[r=255,g=255,b=255], [ATTACHMENT], [1st level, 3rd level], false,
wwwww@2aedb772]]
所以我需要的是:
['NEEDED_ITEM_1','NEEDED_ITEM_2','NEEDED_ITEM_3']
我试图通过使用 regex 将 table 内容相应地拆分成一个列表。但是,我在找到正确的表达方式来完成这项工作时遇到了问题。
如果我这样做:
def get_my_table(my_list=[]):
# Get table entries
table = re.split('\], \[', get_p('myTable', 'Content')[2:-2])
for lineIn_table in table:
# Split up lines
lineIn_table = re.split('\W+', lineIn_table)
i = 1
for columnIn_lineIn_table in lineIn_table:
if i == 1:
my_list.append(columnIn_lineIn_table)
i += 1
return my_list
作为输出我只得到:
['NEEDED_ITEM_1', 'MAIL_INCOMING', 'all', 'NEEDED_ITEM_2', 'MAIL_INCOMING', '2nd', 'NEEDED_ITEM_3', 'MAIL_INCOMING', '第一']
我想更换
'\W'
在第二次分裂中被
[@].+?\',\W\'\W[
这将按这组字符拆分列表
@cb331d80], [
然而,这也没有给出正确的结果。我还不太擅长正则表达式,所以希望得到任何提示!
update,我按照@Jodevan的建议修改了:
table = re.split('\[([\w]+),\s*(?:java)', get_p('myTable', 'Content')[2:-2])
for lineIn_table in table:
# Split up lines
lineIn_table = re.split('\W+', lineIn_table)
i = 1
for columnIn_lineIn_table in lineIn_table:
if i == 1:
my_list.append(columnIn_lineIn_table)
i += 1
return my_list
这个正则表达式怎么样? \[([\w]+),\s*(?:java)
这依赖于下一项是 java.awt.color 这一事实。
然后,为了捕获 NEEDED_ITEM_X 你只需要获得第一组。
我正在 Marathon 中编写测试并试图只获取 JTable 的一列。 它的内容如下所示:
[[NEEDED_ITEM_1, java.awt.Color[r=253,g=255,b=196], [ATTACHMENT], [all levels], false, olololo@56fc12a9], [NEEDED_ITEM_2, java.awt.Color[r=179,g=237,b=181], [ATTACHMENT], [2nd level, 3rd], true, blablabla@cb331d80], [NEEDED_ITEM_3, java.awt.Color[r=255,g=255,b=255], [ATTACHMENT], [1st level, 3rd level], false, wwwww@2aedb772]]
所以我需要的是: ['NEEDED_ITEM_1','NEEDED_ITEM_2','NEEDED_ITEM_3']
我试图通过使用 regex 将 table 内容相应地拆分成一个列表。但是,我在找到正确的表达方式来完成这项工作时遇到了问题。
如果我这样做:
def get_my_table(my_list=[]):
# Get table entries
table = re.split('\], \[', get_p('myTable', 'Content')[2:-2])
for lineIn_table in table:
# Split up lines
lineIn_table = re.split('\W+', lineIn_table)
i = 1
for columnIn_lineIn_table in lineIn_table:
if i == 1:
my_list.append(columnIn_lineIn_table)
i += 1
return my_list
作为输出我只得到:
['NEEDED_ITEM_1', 'MAIL_INCOMING', 'all', 'NEEDED_ITEM_2', 'MAIL_INCOMING', '2nd', 'NEEDED_ITEM_3', 'MAIL_INCOMING', '第一']
我想更换
'\W'
在第二次分裂中被
[@].+?\',\W\'\W[
这将按这组字符拆分列表
@cb331d80], [
然而,这也没有给出正确的结果。我还不太擅长正则表达式,所以希望得到任何提示!
update,我按照@Jodevan的建议修改了:
table = re.split('\[([\w]+),\s*(?:java)', get_p('myTable', 'Content')[2:-2])
for lineIn_table in table:
# Split up lines
lineIn_table = re.split('\W+', lineIn_table)
i = 1
for columnIn_lineIn_table in lineIn_table:
if i == 1:
my_list.append(columnIn_lineIn_table)
i += 1
return my_list
这个正则表达式怎么样? \[([\w]+),\s*(?:java)
这依赖于下一项是 java.awt.color 这一事实。
然后,为了捕获 NEEDED_ITEM_X 你只需要获得第一组。