Python 列表中特定列表元素的乘积

Python 列表中特定列表元素的乘积,python,list,sumproduct,Python,List,Sumproduct,我有一个字符串,其中包括大写字符和子字符串,它们的形式是括号中的整数(例如:(1)) 示例字符串: in_str = '(3)(3)ABC(2)XY(5)PQRSTX(9)(2)TWO(7)SEVEN' in_lst = [[3, 0], [3, 3], [2, 2], [5, 6], [9, 0], [2, 3], [7, 5]] out_lst = [[], [9, 3], [2, 2], [5, 6], [], [18, 3], [7, 5]] out_str = '(9)ABC(2

我有一个字符串,其中包括大写字符和子字符串,它们的形式是括号中的整数(例如:(1))

示例字符串:

in_str = '(3)(3)ABC(2)XY(5)PQRSTX(9)(2)TWO(7)SEVEN'
in_lst = [[3, 0], [3, 3], [2, 2], [5, 6], [9, 0], [2, 3], [7, 5]]
out_lst = [[], [9, 3], [2, 2], [5, 6], [], [18, 3], [7, 5]]
out_str = '(9)ABC(2)XY(5)PQRSTX(18)TWO(7)SEVEN'
我已将子字符串提取到一个嵌套列表中,其中每个子列表包含整数以及它与下一个子字符串之间的大写字符长度

示例列表:

in_str = '(3)(3)ABC(2)XY(5)PQRSTX(9)(2)TWO(7)SEVEN'
in_lst = [[3, 0], [3, 3], [2, 2], [5, 6], [9, 0], [2, 3], [7, 5]]
out_lst = [[], [9, 3], [2, 2], [5, 6], [], [18, 3], [7, 5]]
out_str = '(9)ABC(2)XY(5)PQRSTX(18)TWO(7)SEVEN'
我想将子列表乘以它们的第一个元素,这些元素是直接连接的(字符串中它们之间没有大写字符串),并将使用过的子列表替换为一个空的子列表(任务将需要它),除了每个部分的一个,它包含给定部分的最终sumproduct

所需输出示例:

in_str = '(3)(3)ABC(2)XY(5)PQRSTX(9)(2)TWO(7)SEVEN'
in_lst = [[3, 0], [3, 3], [2, 2], [5, 6], [9, 0], [2, 3], [7, 5]]
out_lst = [[], [9, 3], [2, 2], [5, 6], [], [18, 3], [7, 5]]
out_str = '(9)ABC(2)XY(5)PQRSTX(18)TWO(7)SEVEN'
字符串中的输出列表示例:

in_str = '(3)(3)ABC(2)XY(5)PQRSTX(9)(2)TWO(7)SEVEN'
in_lst = [[3, 0], [3, 3], [2, 2], [5, 6], [9, 0], [2, 3], [7, 5]]
out_lst = [[], [9, 3], [2, 2], [5, 6], [], [18, 3], [7, 5]]
out_str = '(9)ABC(2)XY(5)PQRSTX(18)TWO(7)SEVEN'

不幸的是,就正确的方法而言,我对这一点有点迷茫,因此我无法生成至少返回近似输出列表的代码,因此任何关于这一点的帮助或提示都是非常受欢迎的

您可以使用
re.findall
查找数字及其后面的字母,然后对其进行迭代并转换为所需的形式

import re
split_lst = re.findall(r'\((\d)\)([A-Z]*)', in_str)
print (split_lst)
#[('3', ''), ('3', 'ABC'), ('2', 'XY'), ('5', 'PQRSTX'), ('9', ''), ('2', 'TWO'), ('7', 'SEVEN')]

out_str = ''.join(e for (n,s) in split_lst for e in (('(%s)' % (int(n)*len(s))), s) if s)
print (out_str)
#'(9)ABC(4)XY(30)PQRSTX(6)TWO(35)SEVEN'

我已将子字符串提取到嵌套列表中
,如果可能,请发布此部分的代码。