0

我有一个字符串,其中包括大写字符和子字符串,它们是括号中的整数形式(例如:(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]]

我想将子列表乘以它们的第一个元素,这些元素是直接连接的(字符串中它们之间没有大写字符串),并用空的子列表替换使用过的子列表(任务需要它),除了每个部分一个,其中包含给定部分的最终 sumproduct。

示例所需的输出:

out_lst = [[], [9, 3], [2, 2], [5, 6], [], [18, 3], [7, 5]]

字符串中的示例输出列表:

out_str = '(9)ABC(2)XY(5)PQRSTX(18)TWO(7)SEVEN'

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

4

1 回答 1

1

您可以使用它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'
于 2020-01-16T18:22:32.233 回答