首页 > 解决方案 > Python:将整数转换为计数(即 3 --> 1,2,3)

问题描述

这可能比解释我的问题所需的信息更多,但我正在尝试将 2 个脚本(我为其他用途编写)组合在一起来执行以下操作。

目标字符串(输入文件)4FOO 2BAR

结果(输出文件)1FOO 2FOO 3FOO 4FOO 1BAR 2BAR

我的第一个脚本找到了模式并复制到 file_2

pattern = "\d[A-Za-z]{3}"
matches = re.findall(pattern, input_file.read())
f1.write('\n'.join(matches))

我的第二个脚本打开 output_file 并使用 re.sub 使用捕获组和反向引用替换和更改目标字符串。但我被困在这里如何把 ie3变成1 2 3.

有任何想法吗?

标签: pythonregexbackreferencecapturing-groupcapture-group

解决方案


这个简单的例子不需要使用正则表达式,但如果你想使用re,这里的例子(注意:你的模式有小错误,应该是A-Z,不是A-A):

text_input = '4FOO 2BAR'

import re

matches = re.findall(r"(\d)([A-Za-z]{3})", text_input)

for (count, what) in matches:
    for i in range(1, int(count)+1):
        print(f'{i}{what}', end=' ')

print()

印刷:

1FOO 2FOO 3FOO 4FOO 1BAR 2BAR 

注意:如果要支持多位数字,可以使用(\d+)- 注意+符号。


推荐阅读